Drupal : introduction a un CMS a la mode.
Drupal, pour ceux qui ne connaissent pas encore, c’est un CMS open source créé par Dries Buytaert. Cet outil a été plusieurs fois récompensé, notamment en 2008 (...). Aujourd’hui, c’est le CMS qui monte dans la communauté des développeurs Web Open Source. Je vous propose une petite présentation de Drupal et de ses principes de bases ainsi que des éléments qui font que j’accroche pour la première fois pour un CMS !
Drupal, c’est plus de 1 600 modules, et une communauté de 350 000 membres au 01/08/2008.
L’installation de drupal se fait en 3 secondes… juste le temps de créer une base de données avec MySQL (en standard) et de lancer l’installeur graphique. Certains geek linuxiens pourront même utiliser l’outil Drush (...) pour installer une instance de Drupal en ligne de commande à la manière commandes apt-get.
L’installation de drupal ne pose pas de problème et on dispose rapidement d’un site standard. On peut directement commencer à entrer du contenu. Ce qui est dans un premier temps assez déroutant, c’est que l’on confond le back office du front office. En fessant une analogie avec d’autres CMS tel que le vieillot SPIP ou encore les moteurs de blog tel que Wordpress, on a pas de réelle différenciation entre la présentation du front et celle du back. On peut cependant définir des thèmes différents pour la partie administration et la partie publique.
Vue de la surface :
Drupal s’articule autour de 3 « briques » : un système de base, des modules et des thèmes.
Le système de base est la partie intéressante du CMS. C’est en effet cette partie qui fait l’originalité du système. On pourrait le comparer a un noyau linux : c’est le cœur du système. Les développeur de Drupal l’on conçu de manière a ce qu’il reste ultra-performant.
Les modules sont assez rebutant à installer pour le néophyte car cela demande de naviguer dans les répertoires du site. Mais comme dirait la publicité Apple, « Si vous voulez faire un truc, il y a un module pour cela ! ». Drupal dispose d’un système de hook. Ce dernier permet aux modules d’être bien intégré au cœur du système. Pour schématiser le fonctionnement interne des interactions entre les modules et le cœur, quand un évènements se déroule, le système demande « Un module veut-il faire cette chose ??? », si un module répond oui, alors il le fera, sinon c’est le système qui gérera le truc. Les modules s’installent indépendamment du reste. Ainsi, la désinstallation d’un module n’entraine pas de suppression en cascade des données, mise à part celle concernant le module lui même. Par exemple en installant un module de galeries d’images, en le désinstallant, on supprimera les galeries créer, mais pas forcement les images qui ont été créées et qui dépendent d’un autre module. Une solution intermédiaire est également proposé et consiste en la désactivation du module… sans impact sur les données qui seront en quelque sorte dépubliées.
Vue de la surface le système de thème est très performant. Il constitue en quelque sorte un super module a lui seul. J’aime beaucoup le système de région. Il permet de choisir d’affecter des blocks à une région et de choisir les pages sur lesquelles on souhaite l’afficher ou non et/ou en fonction de quel rôle d’utilisateur également.
Le dernier point intéressant lors d’une approche rapide de ce CMS concerne justement la gestion des permissions et des rôles des utilisateurs. En effet, on peut ajouter des rôles et leur affecter des permissions d’accès spécifiques. On peut ainsi créer un site de création de contenu communautaire et avoir des rôles tels que le visiteur (internaute standard, on inscrit), l’utilisateur, le modérateur, le contributeur, le super contributeur, le webmaster et l’administrateur. Par défaut, il y a deux rôles : l’utilisateur enregistré et l’utilisateur non enregistré… ainsi que un troisième rôle implicite d’administrateur (qui est défini par le compte créé lors de l’installation du site).
Sous la surface : une plongée (en apnée) dans le code.
Comme tout CMS, Drupal dispose d’une logique bien a lui. Cela se reflète dans la manière dont le code a été écris et dans la manière dont il faut l’écrire. Les premiers coups d’œil rapides sur les sources peuvent faire peur…
Ainsi par exemple, ce CMS n’est pas codé selon les méthodes dites Object… Cela m’a surpris au départ. Cependant le système de hook est implanté de telle manière que finalement, on s’y retrouve, même si cela peut prendre du temps. En fait, on s’aperçoit très vite que l’on n’aura généralement pas besoin de coder un module à partir de rien. Vu le nombre de module existant, il y en a toujours un qui fait a peu près ce que l’on souhaite. Il s’agit alors d’adapter ce qui existe à notre besoin. Par contre, si on ne trouve pas ce que l’on cherche, la tâche peut vite devenir lourde…
Le theming et le développement de module sont deux chose bien distinct dans le monde Drupal. Au départ, ce n’est pourtant pas évidant à saisir. En effet, certains modules vont géré la manière d’afficher certaines données… venant en quelque sorte parasiter le thème choisi. Mais dans se cas, l’affichage de ces données se fera de la même manière quelque soit le thème.
De plus, on constate que Drupal a adopté une approche MVC selon les sources officielles… Personnellement, j’ai toujours pensé que ce système MVC permettais a des acteurs ayant des profils différents de travailler ensemble a la réalisation d’un site web. Or il sera bien difficile a un graphiste ne maitrisant pas un minimum PHP d’intervenir sur Drupal.
Bref, les contacts avec les sources ne sont pas forcements simples. Cela demande en effet la lecture de nombreuses documentations pour comprendre le fonctionnement du système.
En conclusion :
Drupal est le CMS à la mode en ce moment. Il permet de faire quasiment tout ce que l’on veut via un système de gestion de modules assez redoutable et un système de thèmes performant.
L’avantage de ce CMS est d’être extrêmement modulaire et de pouvoir fonctionner aussi bien en temps que CMS (normal, c’est son objectif premier) mais également un peu comme un Framework PHP lorsque l’on maitrise son architecture interne et son système d’API.
Pour les néophytes débrouillés, il permettra de programmer un site web au moyen de la souris… ce qui est rebutant pour le développeur plus confirmé !
D’ailleurs, c’est sans doute ce dernier qui aura besoin de plus de temps pour apprivoiser Drupal. Le système de hook est bluffant mais encore faut-il le maitriser…
Drupal semble pouvoir tout faire mais a condition de rester quand même dans une réalité proche… d’abord pour qu’il y ai dans la communauté quelqu’un qui ai développer LE module dont on a besoin et en suite pour que le thème que l’on ai choisi nous convienne et que l’on ai pas besoin de trop le modifier.
Ce billet n’est qu’une introduction. Pour vraiment comprendre pourquoi j’aime bien cet outil, il faudrait que je mentionne le développement de module ainsi que le theming (dans des futurs billets !). Cependant, mes premières impressions étaient celles décrites ici !
