Avec Drupal 8, installer un module est toujours très facile bien que légèrement différent. Auparavant, vous deviez placer vos modules sous /sites/all/modules pour les rendre disponibles à tous vos sites, ou /sites/monsite/modules pour ne les proposer qu'à un site particulier. Même chose pour les thèmes, avec /sites/all/themes et /sites/monsite/themes. Voyons donc ce qui a changé en regardant les fichiers installés à la racine d'un site Drupal 8 :
autoload.php composer.json composer.lock core/ .csslintrc .editorconfig .eslintignore .eslintrc example.gitignore .gitattributes .htaccess index.php modules/ profiles/ README.txt robots.txt sites/ themes/ update.php vendor/ web.config
On a toujours notre dossier /sites, ce qui nous indique que l'on peut toujours restreindre l'utilisation d'un module ou d'un thème au site de son choix. De ce côté, rien n'a changé. Par contre, comment faire lorsque l'on veut rendre disponible un module ou un thème à tous nos sites dans une installation multisites ? Plutôt que de passer par /sites/all/modules et /sites/all/themes, placez les modules et thèmes respectivement sous /modules et /themes - C'est la nouvelle façon de procéder depuis que les modules et thèmes par défaut du coeur de Drupal se trouvent sous /core/modules et /core/themes pour éviter que l'on soit tenter d'y toucher ou d'y ajouter nos propres modules et thèmes.
Rappelez-vous enfin que la bonne pratique est de différencier les modules contrib des modules custom ou patchés. La convention habituellement adoptée est donc :
- /modules/contrib pour les modules de la communauté Drupal
- /modules/custom pour les modules crées de toute piéce pour vos besoins spécifiques
- /modules/patched pour les modules sur lesquels vous avez appliqué un patch, par exemple pour régler un problème avec le module
Cela facilite ainsi grandement le reprise en main de votre site ou même la collaboration avec plusieurs développeurs, en ce sens que l'on sait à quoi s'attendre quand on travaille avec un module contrib tel quel ou un module patché ou custom.
