Vous êtes ici

Comprendre l'architecture Drupal

Vous avez 30 secondes ?
S'abonner au flux d'actualités
Rubrique: 
Pratique
Difficultée: 
Facile
Donnons nous rendez-vous dans votre dossier www/TutoDrupalAddict de votre serveur WAMP local, dans lequel nous avions vu comment télécharger Drupal 8.
 
Il n'est pas nécessaire de connaître ni comprendre ce qui suit pour utiliser Drupal. Cet article est purement pour votre culture et vous pouvez passer à la suite pour continuer votre installation de Drupal 8.
 
Voici une liste des principaux dossiers et modules que vous trouverez dans Drupal Core :

index.php

Voici un fichier à ne pas toucher : c'est le point d'entrée de Drupal. C'est par là que tout commence lorsque quelqu'un veut consulter une page de votre site.

core

Ce dossier contient un ensemble de répertoires et de fichiers nécessaires au fonctionnement de Drupal. Il est très important de bien comprendre qu'il ne faut pas toucher à quoi que ce soit dans ce dossier. Ne pas le déplacer ni renommer ce qu'il y a dedans, ne rien modifier, bref NE PAS TOUCHER !
Je vais vous présenter très brièvement la structure des sous-dossiers de ce répertoire core, mais rien à retenir ici, c'est pour votre culture !

assets

Dans ce dossier se trouvent les fichiers de diverses librairies javascript incluses dans le core de Drupal. Pour les connaisseurs, on retrouve les classiques JQuery et JQuery UI, mais aussi Backbone, CKEditor et bien d'autres. Évidement, on y touche pas !

includes

Ce dossier contient un ensemble de fichiers ".inc". Chacun de ces fichiers contient le code d'un outil ou d'une fonctionnalité de base de Drupal core ne faisant partie d'aucun module (par exemple, DatabaseAPI qui regroupe l'ensemble des fonctions permettant de se connecter à la base de donnée). Vous n'aurez pas à toucher quoi que ce soit dans ce dossier.

lib

Ce dossier contient du code propre à Drupal également nécessaire à son fonctionnement. Pour les connaisseurs, Drupal 8 a été réécrit en PHP orienté objet. Ici se trouvent majoritairement les définitions de classes.

misc

Ce dossier contient les ressources graphiques et javascript de votre site web. En d'autres mots, ce sont de petites icônes (dont l'extension est souvent .png) utilisée dans votre site : des bordures, des cadres, des fonds dégradés, des puces, des petits symboles, etc... Les fichiers javascript permettent quant à eux des manipulations et interactions avec le site "après chargement" de la page. Un bon exemple est la zone déroulante ci-dessous:
Là encore, si vous ne retenez pas tout, ce n'est pas grave ! Ne retenez qu'une chose: on touche à rien là dedans !

modules

Drupal est modulaire: son architecture s'articule autour de modules, chacun apportant une fonctionnalité supplémentaire à l'ensemble. Dans ce dossier se trouvent les modules dit "core", c'est à dire fournis de base avec Drupal. Certains sont activés obligatoirement (comme le module permettant la gestion des utilisateurs !), d'autres sont facultatifs. Contrairement à ce que le nom de ce dossier pourrait laisser penser, ce n'est PAS ici que nous placerons les modules que nous installerons sur notre site. Ce dossier étant réservé aux modules de Drupal core. Ne retenez encore une fois que ceci: on touche à rien !

profiles

Ce dossier contient des profils d'installations préétablis, permettant un déploiement rapide d'un site préconfiguré. Par défaut, Drupal 8 propose les profils minimal (seuls les modules strictement nécessaires sont activés), standard (c'est l'installation de Drupal la plus courante) et testing (utilisant des modules supplémentaires spécialement conçus pour le test et le développement). Ce dossier contient les fichiers suivants :
+ minimal
   + config
   + lib
   - minimal.info.yml
   - minimal.install
   - minimal.profile
+ standard
  + config
  + lib
   - standard.info.yml
   - standard.install
   - standard.profile
+ testing
   + config
   + lib
   - testing.info.yml
   - testing.install
   - testing.profile
Dans chaque dossier de profil se trouve :
  • un dossier config où se trouvent comme son nom l'indique des fichiers de configuration.
  • un dossier lib qui contient des tests de bon fonctionnement du profil.
  • un fichier ".info.yml" qui décrit le profil à Drupal, lui permettant ainsi d'être utilisé correctement.
  • un fichier ".install" contenant les informations d'installation du profil.
  • un fichier ".profile" contenant le code spécifique à l’exécution du profil.

scripts

Contient des scripts d'exécution un peu particuliers pour des opérations de maintenance principalement. Nous n'avons pas à en savoir plus à ce stade d'autant qu'encore une fois ici, on ne touche à rien !

tests

Comme son nom l'indique, ce sont des tests -dit tests unitaires- pour vérifier le bon fonctionnement de Drupal. Encore une fois, on touche à rien !

themes

Les thèmes de base (apparence visuelle de votre site, les couleurs, les formes, les placements etc...) sont contenus dans ce dossier. Nous n'y toucherons pas. Le (ou les) thème personnalisé(s) de notre site ne sera(seront) pas contenu(s) ici !

vendor

Voici un nom de dossier bien étonnant, n'est-ce pas ? C'est ici qu'est conservé, bien séparé du reste, le code provenant des librairies Open-Sources (telles Symphony 2) utilisées par Drupal. Encore un dossier de plus à ne pas toucher.

install.php

Le fichier d'installation de Drupal. Il est séparé du reste de Drupal puisqu'il est censé l'installer: lorsqu'on l'utilise, Drupal n'existe pas encore !

update.php

C'est le fichier d'exécution des mises à jour de Drupal. Séparé lui aussi de Drupal, il s'exécute indépendamment de l'installation pour être capable de résoudre certains problèmes, notamment liés à la mise à jour de votre site et de ses modules. Là encore, on touche pas !

robots.txt

Ce petit fichier n'a rien à voir avec Drupal : il permet d'expliquer aux robots d'explorations comment naviguer sur votre site. Pour que votre site soit inclus dans Google par exemple, un robot, c'est à dire un petit programme automatique, va naviguer sur votre site et indexer son contenu dans les bases de données de Google. Avec ce petit fichier, vous pouvez ordonner aux robots de ne pas visiter votre site, ou de ne pas visiter certaines pages de votre site, souvent par mesure de sécurité - notamment pour les pages d'administrations qui ne sont pas accessibles aux utilisateurs, mais bien uniquement à vous.

modules

Pour ajouter des fonctionnalités à notre site, nous utiliserons des modules Drupal additionnels appelés modules contributeurs. C'est dans ce dossier que nous les placerons ! Voilà enfin un endroit que l'on peut donc toucher. A vrai dire, il faudra même retenir que lorsque l'on parlera du dossier modules de votre installation, c'est à celui-ci que l'on fera référence.

themes

Idem pour les thèmes additionnels que nous souhaiterions installer pour notre site. C'est ici qu'ils seront placés !

profiles

Je vous ai précédemment parlé des profils dans le dossier Core. Sachez que l'on peut en télécharger d'autres pour répondre à divers besoins. Par exemple un profil comme "Commerce QuickStart" permettra en quelques clics de transformer Drupal en un site d'eCommerce prêt à l'emploi : les bons modules et les bonnes configurations seront faites à votre place ! Notez qu'un profil doit être installé en même temps que Drupal : il faut donc y penser dès le début ! Après, c'est trop tard.

sites

Voilà LE dossier intéressant de Drupal pour nous. C'est ici que se placera tout ce qui fera la spécificité de notre site web : nos images, nos vidéos, les modules que nous voulons installer sur notre site... Bref, tout ce qui n'est pas fourni de base avec Drupal. Pour l'instant il contient deux dossiers: all et default. Nous verrons dans le prochain article comment s'en servir.
 
En résumé, vous êtes autorisés à modifier seulement les dossiers et fichiers suivants :
  • modules
  • themes
  • profiles
  • sites
  • robots.txt
Le reste, c'est Drupal qui gère ! Ceci permet d'éviter toute erreur et de garantir constamment une installation propre et fonctionnelle. Le fait de modifier un autre de ces fichiers est appelé hacker le core et c'est mal ! Bien-sûr ce n'est pas illégal puisque Drupal est libre et gratuit, mais ce n'est pas propre, c'est à dire que ce n'est pas la bonne façon de faire - et surtout, vous risquez de rendre votre site inutilisable !
 
Quand on dit on touche pas, on touche pas ! Ça veut aussi dire de ne pas déplacer pas les dossiers. Ne créez donc pas un dossier "touche pas" avec les autres dedans ! Ne touchez pas DU TOUT ! L'organisation des fichiers et dossiers est importante pour Drupal.
Notation: 
Average: 4.6 (11 votes)
Vous avez aimé: 

Commentaires

Portrait de Paradoxe

Bonjour, c'est l'article le plus frustrant que t'as écrit. Je l'ai lu parce que j'y connais pas grand chose, très instructif mais au final j'suis traumatisée par le nombre de pas toucher! T'as même pensé à ajouter qu'on peut pas créer de dossier "touche pas". Bon allez, tant que j'y suis, je précise que ton site est très sympa. Je sais pas trop si avec tes tutos j'arriverai à utiliser Drupal (j'suis toujours à l'install hein), mais en tout cas j'en ai déjà beaucoup appris...Merci :)
1
This post is useful!
This post is useless!

Bonjour !
Merci beaucoup pour votre retour ! Je n'avais pas conscience en écrivant cet article qu'il puisse être aussi frustrant : je pensais au contraire qu'il serait rassurant pour les novices. J'imaginais naïvement que le côté "on ne touche pas" laisserait bien présager qu'utiliser Drupal ne demanderait pas de connaissance en programmation ni de bidouillage complexe dans les fichiers ! Apparement je m'étais trompé.
Pour l'anecdote, le dernier cadre est tiré d'un message d'un lecteur qui - croyant bien faire - avait justement déplacé tous les fichiers et dossiers Drupal core dans un dossier "ne pas toucher". Manque de pot... plus rien ne marchait ensuite !
L'article ne se prêtait pas tellement à une explication complexe, mais ces "on ne touche pas" reflète un point clef de la mise en place d'un site sous Drupal : "don't hack the core" ou encore "ne modifiez pas le noyau". Drupal prévoit en effet tout un tas de mécanismes pour modifier proprement la moindre information du site, et ce afin de préserver intact ce fameux noyau, notamment pour garantir que les mises à jours n'effacent aucune personnalisation de votre site.
 
Dernier point que je voulais aborder en réponse à votre commentaire : j'espère bien que vous allez réussir à utiliser Drupal 8 ! Et la première raison à cela, c'est que si vous suivez mes tutoriaux mais ne réussissez pas, j'aurais alors échoué au but que je me suis fixé : rendre tout cela accessible et clair au tout à chacun !
1
This post is useful!
This post is useless!
Portrait de Jimmy

Alors franchement je peux te rassurer, ton tuto est très clair et fort rassurant ! Je suis en dernière année en infographie orientation web donc je connais et comprend tout ce dont tu parles. Mais dans le cadre de mon stage qui va bientôt commencer, je dois apprendre par moi même Drupal ( ainsi que Silverstripe ) et au vue de la réputation dite "difficile" de Drupal et sachant que l'on a appris à maîtriser que Wordpress, j'étais inquiet d'avoir du mal à comprendre le fonctionnement de Drupal. Puis j'ai découvert ce tuto ! Et je te tire mon chapeau pour la clarté de ces articles :)
This post is useful!
This post is useless!
Portrait de Anonyme

Bonjour, Merci pour ce tutoriel, il est clair et simple à suivre pour les débutants comme moi ! J'ai installé drupal 8.1.2 et je ne retrouve pas la structure que vous avez décrite. Notamment dans /sites où je n'ai que le répertoire default et pas all. Avez-vous une idée d'où vient la différence ? Je n'ose pas continuer sans les bons répertoires car j'ai peur d'être bloqué après notamment pour utiliser les modules et les librairies (qui nécessitent les bons chemins) Merci d'avance pour votre réponse,
This post is useful!
This post is useless!

Bonjour,
C'est une erreur de ma part, ou plutôt un manque de mise à jour. 
Le dossier /all n'existe plus par défaut, et n'est plus conseillé comme bonne pratique. Aujourd'hui, il est considéré comme correct de placer les modules dans le dossier /modules qui est directement à la racine. Les themes dans /themes et les librairies dans /libraries.
Si les modules et thèmes sont spécifiques (par exemple à mon-site.com, ils restent en revanche dans /sites/mon-site.com/modules, etc...
En espérant avoir été clair, je vais mettre à jour cet article très rapidement. Merci pour votre retour !
Dom.
This post is useful!
This post is useless!