Structure des fichiers
This content is not available in your language yet.
Comprendre la structure des fichiers Drupal est essentiel pour naviguer efficacement dans un projet et savoir où placer vos personnalisations.
🗂️ Vue d’ensemble
Section intitulée « 🗂️ Vue d’ensemble »Directorytailstore/ (Racine du projet)
- composer.json
- composer.lock
Directoryconfig/ (Configuration exportée)
Directorysync/
- …
Directoryvendor/ (Dépendances - NE PAS MODIFIER)
- …
Directoryweb/ (Racine web / Docroot)
Directorycore/ (Cœur Drupal - NE PAS MODIFIER)
- …
Directorymodules/
Directorycontrib/ (Modules téléchargés)
- …
Directorycustom/ (Vos modules)
- …
Directorythemes/
Directorycontrib/ (Thèmes téléchargés)
- …
Directorycustom/ (Vos thèmes)
- …
Directorysites/
Directorydefault/
Directoryfiles/ (Fichiers uploadés)
- …
- settings.php (Configuration)
- index.php (Point d’entrée)
- .htaccess (Config Apache)
📁 Détail des dossiers
Section intitulée « 📁 Détail des dossiers »📦 Racine du projet
Section intitulée « 📦 Racine du projet »| Dossier/Fichier | Description |
|---|---|
composer.json | Configuration des dépendances |
composer.lock | Versions verrouillées |
vendor/ | Bibliothèques PHP (généré par Composer) |
config/sync/ | Configuration exportée (YAML) |
web/ | Racine web (docroot) |
🌐 Dossier web/
Section intitulée « 🌐 Dossier web/ »C’est le docroot - le seul dossier accessible depuis le navigateur.
web/core/
Section intitulée « web/core/ »Le cœur de Drupal. Contient :
core/├── includes/ # Fichiers d'inclusion PHP├── lib/ # Classes Drupal (Drupal\Core\...)├── modules/ # Modules du core (node, user, views, etc.)├── themes/ # Thèmes du core (Olivero, Stark, Claro)├── profiles/ # Profils d'installation├── assets/ # CSS, JS, images du core└── core.services.yml # Définition des servicesweb/modules/
Section intitulée « web/modules/ »modules/├── contrib/ # Modules téléchargés via Composer│ ├── admin_toolbar/│ ├── pathauto/│ └── webform/└── custom/ # VOS modules personnalisés └── tailstore_custom/web/themes/
Section intitulée « web/themes/ »themes/├── contrib/ # Thèmes téléchargés│ └── bootstrap/└── custom/ # VOS thèmes personnalisés └── tailstore/web/sites/
Section intitulée « web/sites/ »sites/├── default/│ ├── settings.php # Configuration principale│ ├── settings.local.php # Config locale (optionnel)│ ├── services.yml # Services personnalisés│ └── files/ # Fichiers uploadés│ ├── css/ # CSS agrégé│ ├── js/ # JS agrégé│ └── styles/ # Images dérivées└── sites.php # Multi-site (optionnel)📋 Dossier config/
Section intitulée « 📋 Dossier config/ »config/└── sync/ # Configuration exportée ├── system.site.yml ├── node.type.product.yml ├── field.field.node.product.*.yml └── views.view.products.ymlCe dossier contient les fichiers YAML exportés par drush cex. C’est le cœur du système de configuration sync.
📄 Fichiers importants
Section intitulée « 📄 Fichiers importants »composer.json
Section intitulée « composer.json »{ "name": "drupal/recommended-project", "require": { "drupal/core-recommended": "^11.0", "drupal/admin_toolbar": "^3.4", "drush/drush": "^13.0" }, "extra": { "installer-paths": { "web/modules/contrib/{$name}": ["type:drupal-module"], "web/themes/contrib/{$name}": ["type:drupal-theme"] } }}web/sites/default/settings.php
Section intitulée « web/sites/default/settings.php »Fichier de configuration principal :
<?php
// Configuration de la base de données$databases['default']['default'] = [ 'database' => 'tailstore', 'username' => 'db', 'password' => 'db', 'host' => 'db', 'driver' => 'mysql',];
// Chemin vers la configuration sync$settings['config_sync_directory'] = '../config/sync';
// Salt pour les hashs$settings['hash_salt'] = 'VOTRE_HASH_UNIQUE';
// Trusted hosts$settings['trusted_host_patterns'] = [ '^tailstore\.ddev\.site$', '^localhost$',];web/sites/default/settings.local.php
Section intitulée « web/sites/default/settings.local.php »Configuration locale (non commitée) :
<?php
// Activer le mode développement$config['system.performance']['css']['preprocess'] = FALSE;$config['system.performance']['js']['preprocess'] = FALSE;
// Afficher les erreurs$config['system.logging']['error_level'] = 'verbose';
// Désactiver le cache de rendu$settings['cache']['bins']['render'] = 'cache.backend.null';
// Clés Stripe (dev)$settings['stripe_public_key'] = 'pk_test_xxxx';$settings['stripe_secret_key'] = 'sk_test_xxxx';.gitignore recommandé
Section intitulée « .gitignore recommandé »# Dépendances/vendor//web/core//web/modules/contrib//web/themes/contrib//web/profiles/contrib/
# Fichiers générés/web/sites/default/files//web/sites/default/settings.local.php
# IDE.idea/.vscode/
# OS.DS_StoreThumbs.db
# DDEV.ddev/.gitignore🏗️ Structure d’un module custom
Section intitulée « 🏗️ Structure d’un module custom »web/modules/custom/tailstore_custom/├── tailstore_custom.info.yml # Métadonnées├── tailstore_custom.module # Hooks├── tailstore_custom.routing.yml # Routes├── tailstore_custom.services.yml # Services├── src/│ ├── Controller/│ │ └── CartController.php│ ├── Form/│ │ └── SearchForm.php│ └── Service/│ └── CartService.php├── templates/│ └── cart-dropdown.html.twig└── css/ └── styles.css🎨 Structure d’un thème custom
Section intitulée « 🎨 Structure d’un thème custom »web/themes/custom/tailstore/├── tailstore.info.yml # Métadonnées├── tailstore.libraries.yml # CSS/JS├── tailstore.theme # Hooks de thème├── logo.svg # Logo├── screenshot.png # Capture d'écran├── templates/│ ├── layout/│ │ └── page.html.twig│ ├── node/│ │ └── node--product.html.twig│ └── views/│ └── views-view--products.html.twig├── css/│ ├── styles.css│ └── custom.css└── js/ └── script.js🌍 Multisite Drupal
Section intitulée « 🌍 Multisite Drupal »Le multisite est une fonctionnalité Drupal permettant de servir plusieurs sites avec une seule installation Drupal. Chaque site peut avoir :
- Sa propre base de données
- Ses propres modules et thèmes activés
- Sa propre configuration
- Son propre système de fichiers
Structure multisite
Section intitulée « Structure multisite »web/sites/├── sites.php # Détermination du site├── default/ # Site principal│ ├── settings.php│ ├── services.yml│ └── files/├── site1.local/ # Deuxième site│ ├── settings.php│ ├── services.yml│ └── files/└── site2.com/ # Troisième site ├── settings.php ├── services.yml └── files/Comment ça marche ?
Section intitulée « Comment ça marche ? »- Détermination du site : Le fichier
sites.phpvérifie le domaine/host de la requête - Configuration par site : Chaque dossier
sites/<nom>/contient sa propre configuration - Base de données dédiée :
settings.phpspécifie quelle BDD utiliser - Isolation : Les fichiers uploadés sont isolés par site
Exemple de sites.php
Section intitulée « Exemple de sites.php »<?php
// Détermination automatique basée sur le domaine HTTP_HOST$sites = [ 'site1.local' => 'site1.local', 'www.site1.local' => 'site1.local', 'site2.com' => 'site2.com', 'www.site2.com' => 'site2.com',];
if (isset($sites[$_SERVER['HTTP_HOST']])) { $site_dir = $sites[$_SERVER['HTTP_HOST']];}Exemple de settings.php (site1.local)
Section intitulée « Exemple de settings.php (site1.local) »<?php
// Configuration spécifique au site 1$databases['default']['default'] = [ 'database' => 'site1_db', 'username' => 'db_user', 'password' => 'db_pass', 'host' => 'db', 'driver' => 'mysql',];
$settings['config_sync_directory'] = '../../config/site1';Cas d’usage
Section intitulée « Cas d’usage »Le multisite est généralement utilisé pour :
- Réseaux de sites : Agences avec plusieurs clients
- Localisation : Un site par langue avec contenu partagé
- Prototypes : Tester plusieurs configurations du même site
Pour la plupart des projets : Une instance Drupal = un domaine. C’est plus simple et plus robuste.
🔍 Où trouver quoi ?
Section intitulée « 🔍 Où trouver quoi ? »| Je cherche… | Emplacement |
|---|---|
| La config de mon site | config/sync/system.site.yml |
| Un type de contenu | config/sync/node.type.*.yml |
| Les champs d’un contenu | config/sync/field.field.node.*.yml |
| Une vue | config/sync/views.view.*.yml |
| Les modules installés | web/modules/contrib/ |
| Mon module custom | web/modules/custom/ |
| Mon thème | web/themes/custom/ |
| Les fichiers uploadés | web/sites/default/files/ |
| La configuration PHP | web/sites/default/settings.php |
✅ Exercice pratique
Section intitulée « ✅ Exercice pratique »-
Explorez la structure de votre projet :
Fenêtre de terminal # Lister les dossiers principauxls -lals -la web/ls -la web/modules/ -
Créez les dossiers pour vos futurs modules et thèmes :
Fenêtre de terminal mkdir -p web/modules/custommkdir -p web/themes/custom -
Vérifiez que le dossier de configuration existe :
Fenêtre de terminal ls -la config/sync/
🚀 Étape suivante
Section intitulée « 🚀 Étape suivante »Passez à la Configuration Sync pour maîtriser l’import/export de configuration.