Drupal 10 : Structure des fichiers

N'ayez plus peur de vous perdre dans les fichiers de Drupal. On vous explique tout !

Cet article a été initialement rédigé pour Drupal 8 mais son contenu est toujours d'actualité pour Drupal 9 et Drupal 10.

N'hésitez pas à nous contacter ou à vous inscrire à notre formation «Drupal pour les développeurs et développeuses» pour en savoir plus !

Depuis Drupal 8, le bon sens est enfin de retour. Fini les modules, profils d’installation ou thèmes à ranger dans des sous-dossiers pour ne pas se mélanger avec ceux du cœur de Drupal.

├── core
│   ├── assets
│   ├── config
│   ├── includes
│   ├── lib
│   ├── misc
│   ├── modules
│   ├── profiles
│   ├── scripts
│   ├── tests
│   └── themes
├── modules
├── profiles
├── sites
│   ├── all
│   └── default
├── themes
└── vendor

Le cœur a maintenant son propre dossier /core dans lequel sont rangés ses fichiers vitaux.

De nouveaux dossiers font leur apparition en plus de ce qu’il existait sous Drupal 7, regardons ce qu’ils regroupent :

  • assets : Stockage des librairies externes Javascript. jQuery, CKeditor, Backbone.js, etc.
  • config : Fichiers de définition des schémas d’une partie des données du cœur (les modules peuvent en définir d’autres).
  • lib : Lieu de vie de toutes les classes qui font des trucs vachement intelligents dans Drupal. This is the place to be.
  • vendor : Stockage de toutes les librairies autres que Javascript. Autoloader PSR, Twig, Composer, Behat, etc.

Les répertoires /modules, /profiles et /themes à la racine de l’installation servent enfin à accueillir vos modules, profils d’installation et thèmes contribués ou spécifiques.

Le nouveau système de configuration de Drupal permet d’exporter la configuration du site, cela se fait dans le répertoire des fichiers de Drupal. Nous conseillons de sortir le répertoire de configuration hors des fichiers servis par le serveur web en surchargeant le chemin dans le fichier settings.php afin d’éviter que n’importe qui puisse les récupérer en cas de mauvaise configuration du serveur.

Exemple :

# settings.php
$config_directories['sync'] = '../config/sync'; 

Depuis Drupal 8.8.0, le paramétrage du répertoire de synchronisation de la configuration a légèrement changé (EN).
Il faut désormais utiliser $settings['config_sync_directory'] au lieu de $config_directories['sync'].

Si vos méthodes de travail vous font utiliser plusieurs environnements (site local, pré-production, production, etc) il est fort à parier que vous ayez besoin d’avoir des données de configuration spécifiques à chaque environnement.
Pour mettre cela en œuvre dans Drupal 7 il était commun d’inclure un fichier appelé
settings.local.php situé dans le dossier /sites/default ou dans le dossier de votre site en cas de multi-site.
Depuis Drupal 8, cette pratique a été intégrée de base et le fichier
settings.default.php vous permet d’inclure ce fichier local en retirant les commentaires des quelques lignes situées en fin de fichier.

Drupal permet désormais également d'intégrer un fichier services.yml qui va vous permettre de surcharger certains paramètres des Services implémentés par le cœur ou les modules contribués.

Voici un exemple de surcharge :

# services.yml // Activation du débug dans Twig.
  parameters:
    twig.config:
      debug: true 

Votre commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
Votre adresse servira à afficher un Gravatar et à vous notifier des réponses. Votre commentaire sera anonymisé si ce billet est dépublié pendant plus de 3 mois.
Pour lutter contre le spam notre système enregistre votre adresse IP et votre adresse e-mail si vous la partagez.
Nous vous invitons à consulter notre politique de confidentialité pour comprendre les traitements faits de ces données et comment les rectifier.

À propos de Julien

Co-fondateur - Scrum master & Expert technique

Utilisateur de Drupal depuis 2008, j’ai fait mes armes comme développeur chez Commerce Guys puis me suis mis à encadrer les nouveaux arrivants avant de donner des formations, participer aux avant ventes et accompagner les équipes au passage à Scrum.

Je suis impliqué dans la communauté française de Drupal depuis 2009, j’ai été tour à tour président puis vice-président de l’association Drupal France et francophonie entre 2011 et 2013.