Drupal
Description de l'image Druplicon.large.png.

Informations
Développé par Dries Buytaert et Drupal Association (en)Voir et modifier les données sur Wikidata
Première version Voir et modifier les données sur Wikidata
Dernière version 7.101 ()[1]
10.2.7 ()[2]
10.3.1 ()[3]Voir et modifier les données sur Wikidata
Dépôt git.drupalcode.org/project/drupal.gitVoir et modifier les données sur Wikidata
Écrit en PHPVoir et modifier les données sur Wikidata
Système d'exploitation Linux, Microsoft Windows, macOS et UnixVoir et modifier les données sur Wikidata
Langues MultilingueVoir et modifier les données sur Wikidata
Type Système de gestion de contenuVoir et modifier les données sur Wikidata
Licence Licence publique générale GNU version 2 ou ultérieureVoir et modifier les données sur Wikidata
Site web www.drupal.orgVoir et modifier les données sur Wikidata

Drupal (prononcé à l'anglaise /ˈdruːpəl/) est un système de gestion de contenu (CMS) libre et open-source publié sous la licence publique générale GNU et écrit en PHP. Il permet la création et l'entretien de sites Web de manière plus rapide et plus efficace que la programmation HTML/CSS classique.

Historique

Conçu en 2000 à l'université d'Anvers par Dries Buytaert comme un forum (message board) entre amis, Drupal évolue vers un « assembleur rapide de site web » (rapid website assembler). Son code est ouvert depuis 2001[4].

Le nom Drupal est une traduction anglaise du mot néerlandais druppel, qui signifie “goutte”. L'idée est sans doute liée à l'existence d'un site Drop.org, aujourd'hui disparu, que Dries Buytaert avait voulu appeler “dorp” (mot néerlandais signifiant "village") en raison de son but communautaire. L'histoire veut que Dries Buytaert ait fait une erreur de frappe lors de la vérification du nom de domaine et ait pensé que l'erreur sonnait mieux[4].

En , Drupal est classé 1er du concours organisé par la société britannique Packt (en) dans la catégorie Best Open Source PHP CMS, devant WordPress et Joomla!. Il fait également son entrée en première position dans le Hall of Fame Award nouvellement créé, suivi par Joomla![5].

En septembre 2009, 500 000 sites l'utilisent[6].

En , Angela Byron annonce[7] que Drupal équipe à peu près 1 % des sites Internet mondiaux.

En , la société Acquia (dédiée à Drupal et créée par son fondateur) lève 50 millions de dollars auprès de New Enterprise Associates (NEA) et Split Rock Partners[8].

En , Drupal est utilisé par 3,5% des sites web à travers le monde. C'est le 3e système de gestion de contenu le plus utilisé derrière WordPress et Joomla[9].

Écran de modification du contenu dans Drupal 9

Principes

Drupal peut être utilisé à quatre niveaux différents :

  1. Tel quel : une fois celui-ci installé et paramétré, il est utilisable pour créer du contenu structuré et annotable par des utilisateurs qui peuvent s'enregistrer sur le site. Les menus du site ont alors un aspect standard.
  2. Personnalisation simple : il est ensuite possible de personnaliser l'emplacement d'affichage ou l'affichage lui-même, de composants visuels standards (date et heure, derniers posts, nombre de connectés, etc.) ainsi que le thème d'affichage (terme expliqué plus bas) du site.
  3. Extension par ajouts externes : ajout, paramétrage et personnalisation de modules optionnels n'appartenant pas au noyau. À ce stade et au suivant, il n'est pas rare que le développeur du site écrive aussi un thème de présentation qui lui soit propre.
  4. Extension par développement interne : écriture de nouveaux modules régis par la GPL, qu'il est souvent efficace (mais nullement obligatoire) de présenter ensuite à la communauté afin que celle-ci puisse participer à leur évolution.

Drupal lui-même utilise une base de données, qui comprend 60 à 300 tables selon les modules activés – et une hiérarchie de fonctions toutes substituables, qui permettent au développeur d'application expérimenté de réécrire la seule partie qu'il désire modifier, et uniquement au niveau d'abstraction auquel il s'intéresse, sans toucher au reste. La bonne ou la mauvaise connaissance du niveau exact auquel intervenir peut diviser ou multiplier le temps de réalisation d'un facteur 10 ou plus.

Drupal comporte environ 4 000 fonctions d'API, mais le site api.drupal.org permet de les retrouver en accès direct par une partie quelconque du contenu de leur nom. Dans la pratique, un module simple peut fort bien n'en utiliser qu'une dizaine, voire moins.

Contenus, traitements, présentation

Contenus, ou nœuds

Drupal nomme tout contenu qu'il gère[10] un "nœud". Une page d'article sera par exemple un nœud. Une page de livre aussi.

Ce nœud possédera d'une part un type : forum, article de fond, information brève, tutoriel, blog, commentaire, formulaire de saisie, livre collaboratif, image ou galerie d'images, sondage interactif, page de wiki, description d'article à vendre en ligne, petite annonce classée, etc. : la forme n'est plus assujettie à une architecture prédéterminée, ce qui rend le contenu aisément reconfigurable. En contrepartie de cette liberté, le concepteur doit se familiariser avec sa logique particulière.

Le nœud possédera par ailleurs, conformément aux spécifications de son type, des champs : nom, type, date, auteur, image éventuelle, corps, votes de la communauté sur son contenu, etc.

La taxinomie peut comporter des ascendances multiples
La taxinomie peut comporter des ascendances multiples

Chaque nœud peut être attaché simultanément à plusieurs termes taxinomiques si on le désire (ainsi une brève sur une médaille d'or française aux Jeux olympiques peut être rattachée à la fois à "Sport" et à "France"[11], comme l'indique le schéma ci-contre). Le concepteur ou l'administrateur ne sont donc pas obligés d'insérer leurs contenus dans une hiérarchie initiale unique. Il faut simplement que les taxinomies restent cohérentes (A ne peut pas dépendre de B dans l'une pendant que c'est B qui dépend de A dans une autre, ce qui n'aurait de toute façon aucun sens).

À sa création, un nœud se voit attribuer un node ID (NID) qui le caractérise. Au fur et à mesure de ses révisions, s'il y en a, le système incrémente un compteur de révision ID (VID). Le concepteur peut choisir de conserver ou non les révisions autres que la plus récente. Chaque nœud possède aussi un titre, ce qui permet aux administrateurs de les gérer de façon plus commode.

La complexité du titre ne joue pas, car l'administrateur aura juste à le cliquer sur une liste, sans jamais avoir à le frapper lui-même.

Le système de révisions successives permet de revenir à une version antérieure si besoin, comme on le fait dans les wikis.

Traitement : modules (PHP)

Les traitements sont assurés par des modules, indépendants, juxtaposables, et combinables (un module peut utiliser les services fournis par un autre, et l'avoir comme prérequis). Ils sont activables et désactivables à volonté sans arrêter le site.

Dans Drupal 6, il existait plusieurs types de modules, les plus simples étant les suivants :

Dans Drupal 7, il n'existe plus que des zones : l'administrateur du site peut les déplacer à tout moment comme il le veut; le concepteur leur attribue des tailles, des polices et des teintes. Le contenu d'un nœud peut donc parfaitement s'afficher dans les marges latérales si on le désire. Cette possibilité rend des services considérables en développement, permettant d'allouer par exemple des zones au débogage.

Les fonctions d'un module peuvent renvoyer trois choses :

Article détaillé : Drupal 8.

Drupal 8, sorti le 19 novembre 2015[12], s'articule sur le framework français Symfony 2 dans un souci de normalisation, de s'ouvrir à un grand nombre de développeurs et de tirer pleinement profit de l'approche objet de PHP, en particulier les espaces de noms qui faciliteront l'isolation des modules. Il permettra l'affichage des mêmes contenus - présentés de façon appropriée dans chaque cas - sur les PC, les tablettes et les téléphones mobiles, y compris en utilisant la technologie du push[13].

De ce fait, Drupal adhère de facto à l'architecture REST[14].

Présentation : thèmes (CSS et PHP)

Ni les nœuds ni les modules ne s'occupent de la présentation (ni même d'ailleurs les balises XHTML). Ce sont les styles qui en sont chargés, à la manière des feuilles de style en (X)HTML. Un administrateur de site Drupal peut changer profondément le style de celui-ci en quelques clics de souris, pour une commémoration ou un autre événement, par exemple.

Ce système est conçu pour bien séparer le cœur de métier d'un créateur de site (gestion et articulation des données) de la partie uniquement visuelle, qui fait appel à des concepts bien distincts (ergonomie entre autres) et peut avoir avantage à être sous-traitée à une officine spécialisée (agence web, graphiste indépendant).

Il est géré partout où cela est possible par des entrées dans une feuille de style CSS et, là où du traitement spécifique est nécessaire (par exemple alterner deux couleurs de fond pour présenter les lignes successives d'un tableau) par des fonctions de thémage simples écrites en PHP.

Les fonctions de thémage prennent en entrée des chaînes, vecteurs ou tableaux (ou tableaux de tableaux) et produisent en retour une chaîne XHTML de mise en forme qui sera dirigée par le programmeur vers la zone de son choix, désignée par son nom et non par sa position. Le concepteur et l'administrateur du site décident en dernier ressort des endroits de la page où s'afficheront ces informations, ainsi que la couleur et la police, et cela soit par réorganisation de blocs au tableau de bord, soit par modification des feuilles définissant le style de chaque bloc.

Si l'on ne désire modifier que les polices, leurs corps, leurs graisses et leurs couleurs, le module Sweaver permet aussi de le faire dynamiquement à même le site.

Administration des blocs

À un module de bloc sont associées des informations définies et modifiables extérieurement au module par l'administrateur :

Cette composition est voisine de la box strategy définie par Donald Knuth pour rendre cohérente la composition d'ouvrages en PAO

Depuis la version 6, les informations de priorité sont gérables par simple glisser/déplacer sur un menu spécial, ce qui facilite les réarrangements fréquents.

À partir de la version 7, il n'y a plus de blocs latéraux opposés à une partie centrale, mais uniquement des régions gérées sur un pied d'égalité par l'administrateur. Ainsi une fenêtre de débogage latérale peut être déplacée d'un clic dans la partie centrale plus vaste le temps d'un développement, etc.

Programmation événementielle

Drupal associe des exécutions de code à chaque objet cliquable (callbacks). Ce qui est développé ne possède donc pas de séquence à proprement parler, et peut être appelé dans un ordre quelconque.

Les fonctions de callback[15] en Drupal sont voisines conceptuellement de la notion de tâche en CICS, à ceci près que la phase de compilation n'a plus lieu d'être, PHP étant un langage interprété.

Rôles

L'administrateur peut affecter à chaque utilisateur (existant ou par défaut pour chaque futur utilisateur) un ou plusieurs rôles, qui regroupent un ensemble de permissions. Il est alors possible de définir finement autant de permissions que nécessaire entre l'administrateur - qui peut tout faire - et l'usager non enregistré, qui peut par exemple n'avoir le droit que de regarder le site sans le modifier.

Maintien du contenu

D'une version majeure à la suivante (4.x, 5.x, 6.x...) Drupal ne garantit nulle compatibilité ascendante du code développé, mais en revanche garantit qu'il ne sera jamais nécessaire de modifier le contenu, qui représente souvent de cent à cent mille fois (dans le cas par exemple de presse quotidienne archivée) le volume du seul code. Il se prête donc bien aux contenus nécessitant une forte pérennité : consultation d'archives de presse, de textes légaux, de suivi de clientèle, etc.

Cette décision, qui peut surprendre, est liée à l'évolution très rapide des pratiques sur l'Internet : un système de gestion de contenu qui serait astreint aux restrictions d'une analyse et d'une architecture pensées deux ans plus tôt ne serait plus forcément en phase avec les attentes du marché, et ne gérerait les nouvelles possibilités techniques (vidéo, géolocalisation, Google maps, PDA, Flash, RSS, Twitter, téléphones, tablettes, détection d'anomalies de sécurité en temps réel, etc.) que par des sortes de rustines. Or changer de CMS parce que l'ancien est en impasse coûte bien plus cher que simplement faire muter de version un CMS existant sans effectuer autre chose qu'un export/import de son contenu.

Pour cette raison, il existe toujours deux versions majeures de code successives maintenues séparément par les équipes de développeurs. On peut donc choisir si on le désire d'ignorer une version majeure sur deux. On peut aussi si on le préfère faire coexister une version de production et une version de test sur un contenu identique, etc.

Dans la pratique, les modifications ne portent la plupart du temps que sur le nombre d'arguments des fonctions existantes (API), les ajouts leur permettant des fonctionnalités supplémentaires. Voici par exemple une évolution de l'API book_toc(), qui établit la table des matières d'un contenu de type livre (ensemble de nœuds structurés) :

Architecture

Visibilité par les moteurs de recherche

Toute page d'information dans Drupal possède une URL sous la forme : http://www.exemple.com/?q=node/83 Cette forme d'URL, non reconnue par les moteurs de recherche, peut le devenir grâce à CleanURL (dans Drupal 8, CleanURL est activé par défaut) : http://www.exemple.com/node/83 De plus, l'URL peut être rendue plus significative en utilisant un alias : http://www.exemple.com/nos_prestations.

Langage hôte

Drupal est développé en PHP. De nombreuses fonctionnalités sont aussi programmées en JavaScript, principalement en utilisant la bibliothèque JQuery.

Composants

Drupal comporte deux types de composants bien distincts :

Le cœur est totalement francisé, ainsi qu'une partie des modules non officiels. Il est aisé de se faire une première idée de la qualité de ces modules, car le site officiel les recense et met en regard de chacun les bogues remontées[pas clair] avec leur date et celle de résolution s'il y en a eu une. Pour les corriger, on ne sera jamais si bien servi que par soi-même, ce qui est le principe même de l'Open source[réf. nécessaire] : les modules sont écrits en PHP ordinaire.

Lorsque l'usage de certains modules est durablement plébiscité, ceux-ci peuvent être incorporés dans le cœur d'une version ultérieure. Celui de Drupal 7 intègre par exemple la suite de tests automatiques SimpleTests[16], jusqu'alors module séparé.

Les modules sont composables entre eux pour en donner de plus puissants. Un exemple typique est OG Minutes, qui combine le module OG (organic groups gérant des communautés privées ou publiques d'utilisateurs), et Minutes (gérant les présences à un meeting), etc.

Internationalisation et localisation en standard

Il est possible à chaque utilisateur de se déclarer un fuseau horaire et une langue. La langue de chaque contenu lui étant associé, la construction de sites internationaux et multilingues est une fonction standard de Drupal. Le site PHP-GTK[17], par exemple, a été l'un des premiers à posséder des contenus en français, anglais et portugais brésilien. Le grec, le kanji, le cyrillique et l'arabe, pour ne citer qu'eux, ne posent pas davantage de problème.

Récompenses

Dans le concours organisé par la société britannique Packt (en), Drupal s'est classé premier en 2008 au concours des meilleurs systèmes de gestion de contenu, dans la catégorie Overall Open Source Content Management System Award (Récompense du meilleur système de gestion de contenu en accès libre), ainsi que dans la catégorie Best PHP Open Source Content Management System (Meilleur système de gestion de contenu en accès libre et en php), devant Joomla! dans les deux cas[5].

En 2009, il reste premier de ce concours dans la catégorie Best Open Source PHP CMS suivi par WordPress et Joomla!. En revanche, il disparaît du top 3 de la catégorie Overall, menée par WordPress. Il fait cependant son entrée en première position dans le Hall of Fame Award nouvellement créé, suivi par Joomla![5].

Caractéristiques

• Moteurs de template. — Drupal permet d'utiliser comme moteur de template XTemplate, PHPTemplate (moteur de template officiel depuis la version 4.7) mais aussi Smarty.

• Permissions. — De façon à permettre une souplesse maximale, les permissions sont gérées par des libellés que les administrateurs et rédacteurs de modules choisissent librement. Il faut juste prendre garde à ce que le même libellé ne soit pas utilisé par deux modules différents pour désigner des permissions différentes.

• Modules. — En 2008, les modules les plus utilisés sont (statistiques[18] établies sur 85 000 installations de Drupal ayant activé le retour de statistiques. Les chiffres sont arrondis au millier pour une meilleure lisibilité) :

  1. Views (39 000) : présentation de listes de contenu sur des critères de son choix[19]
  2. Content Construction Kit - CCK (34 000) : création de nouveaux types de contenu par ajout de champs[20]. Intégré au core dans Drupal 7.
  3. Token (32 000) : gestion de formats normalisés (par exemple les URL, etc.)
  4. Pathauto (26 000) : insertion automatique de chemin en fonction du contenu
  5. Update-status (21 000) : prévient des mises à jour de modules
  6. Image (21 000) : remontée de contenu image par les utilisateurs[21] : Permet de créer des galeries d'images. Ce module nécessite le module upload. Il permet également d'effectuer des traitements sur les images transférées (création de vignettes, etc.). Intégré au core dans Drupal 7.

Les modules officiels sont :

Il existe de plus des milliers de modules créés par la communauté. Les modules couvrent beaucoup de besoins des sites web modernes et comprennent même deux suites de commerce électronique. Le système de hooks (adresses URL interceptées + fonctions comportant des noms conventionnellement unifiés) et de callbacks permet de les utiliser n'importe où dans le traitement d'une requête. C'est la raison pour laquelle on trouve tant de modules proposant tant de fonctionnalités différentes.

Bonnes pratiques

Thémage séparé

Toute sortie d'information sans exception doit se faire à travers une fonction theme(), sans quoi on ne bénéficierait pas des avantages de la séparation nette entre les informations brutes du contenu et les choix de présentation propres au site.

Usages techniquement avancés de Drupal

Les sites suivants montrent des exemples d'intégration de la technologie flash et du format PDA à des sites Drupal. Bien que peu répandues encore, des intégrations de ce type devraient se généraliser. Ces exemples sont destinés à rappeler que Drupal n'emprisonne pas dans un cadre figé, mais constitue une simple plateforme de départ pour un site pouvant intégrer de multiples technologies.

Le site drupal.org fait également état[24] de communication bidirectionnelles avec OpenLaszlo pour réaliser des applications Internet riches.

Autour de Drupal

Courbe d'apprentissage

Une courbe d'apprentissage informelle permet à chacun de se situer par rapport aux autres drupalistes[25], ce qui aide à se grouper par niveau dans les réunions nationales ou internationales.

Référence des API

Le site api.drupal.org[26] donne accès à toutes les API de Drupal en format hypertexte. Une pratique commode est de télécharger son contenu par HTTrack et de consulter celui-ci au gré de ses besoins en mode non connecté depuis le navigateur d'une tablette Android ou autre, si l'on manque de place sur l'écran ou les écrans de développement.

Métiers

Dans le cadre d'une association ayant peu de trafic et/ou d'exigences, Drupal peut être installé par une seule personne s'occupant de tout. Des sites de très grande envergure, à l'audience nationale ou internationale massive, nécessiteront de former à Drupal :

Prestataires

Une liste de prestataires Drupal est tenue à jour[27] sur le site drupal.fr. Plusieurs de ces prestataires participent aux réunions annoncées sur le site, qui sont publiques, ce qui est une occasion de les voir en action. Une large partie d'entre eux participe également aux développements, à la maintenance et aux extensions des modules du pot commun. Une conférence européenne annuelle[28] permet à ceux qui le souhaitent des échanges intensifs pendant une semaine. Une autre est organisée aux États-Unis[29].

Une société créée en 2008, Acquia, vise à assurer sur Drupal le même genre de support que Red Hat, Canonical ou Novell sur Linux, dans le cadre de la GPL. Elle ne se donne pas pour vocation la construction de sites, mais uniquement le support du produit lui-même auprès des prestataires ou de leurs clients, sur une base d'abonnement. Sa distribution validée de Drupal, GPL elle-même par la force des choses, se nomme Carbon.

Distributions gratuites

Une distribution Drupal est un paquet comprenant le noyau Drupal, un ensemble de modules, des thèmes, des bibliothèques et des profils d'installation. Les distributions Drupal s’adressent à un cas d’usage spécifique, tel que le commerce électronique, l’intranet, le réseau social[30].

Téléchargeable gratuitement[31], Acquia Drupal contient en standard les modules Fivestar (notation des contributions de 1 à 5 étoiles) et Poll (organisation de sondages avec résultats graphiques au fil de l'eau). Intégrant tous les composants de la stack Drupal sous un panneau de commande unique, elle évite d'installer et de gérer séparément Drupal et WAMP (ou Drupal et LAMP, car il en existe une version Ubuntu), et paramètre automatiquement l'interface entre les deux. Elle constitue un bon moyen d'initiation et plus, d'autant qu'elle n'interfère nullement avec des installations antérieures éventuelles d'Apache ou MySQL (avec Wampserver ou XAMPP, par exemple), grâce à un choix libre des numéros de ports.

Tripal est une distribution Drupal open-source adaptée à la génomique, la génétique, la sélection variétale et plus généralement les bases de données biologiques. Elle s'interface avec les outils courants de ces domaines (Blast, navigateur de génome…)[32].

Open Atrium[33] est un package plutôt qu'une distribution, et propose une normalisation des blogs, calendriers, thèmes, documents collaboratifs, groupes, wikis et gestion d'avancement de projet ("tracking"), entre autres. Cependant, il ne sera plus supporté à partir du 31 octobre 2022.

Drupal Commerce Kickstart[34] est aussi un package, suite complète de vente en ligne avec catalogue illustré, téléchargeable gratuitement et qui sert aussi de vitrine à ses concepteurs. Elle gère la TVA européenne.

Opigno[35] est une plate-forme Learning management system (LMS), elle fournit une distribution[36], mais aussi un framework - il suffit de télécharger les différents modules séparément pour concevoir une solution e-learning sur mesure.

Open Social est une distribution de Drupal 8 permettant de créer des communautés, des réseaux sociaux d'entreprise et des intranets[37].

Drupal est intégrée dans un ensemble de paquets de Debian GNU/linux[38] et est donc intégrable aux distributions dérivées de Debian.

Notes et références

  1. « drupal 7.101 »,
  2. « https://www.drupal.org/project/drupal/releases/10.2.7 »
  3. « drupal 10.3.1 », (consulté le )
  4. a et b « History », sur drupal.org (consulté le )
  5. a b et c Liste des gagnants depuis 2006 sur le site de Packt
  6. « Drupal, la machine à tout faire du Web », Rue89, 5 septembre 2009.
  7. "Drupal also now powers over 1 % of the web, including the websites of household names such as whitehouse.gov and grammy.com", Drupal 7 Module Development, (ISBN 978-1-849511-16-2), préface.
  8. Drupal : Acquia lève 50 millions de dollars, Journal du Net, 28 mai 2014
  9. « Usage Statistics and Market Share of Content Management Systems for Websites, February 2019 », sur w3techs.com (consulté le )
  10. Excepté les commentaires, gérés pour des raisons de performance dans une table qui leur est propre.
  11. mais aussi à un éventuel tag "Médaille d'Or", un autre lié à l'année, etc.
  12. « Drupal 8.0.0 released | Drupal.org », sur www.drupal.org (consulté le )
  13. http://plusvite.net/?9f08da07 Webchick (Angela Byron) est coresponsable du noyau Drupal
  14. (en) « The future is a RESTful Drupal », sur buytaert.net, Dries Buytaert, (consulté le ).
  15. Ce ne sont pas de "vrais" callbacks au sens des interfaces graphiques, par exemple, car une fonction ne s'enregistre pas au moment de l'exécution : c'est directement son nom qui indiquera à quoi elle se rattache; dans d'autres contextes, on nomme parfois ces traitements des exits parce qu'ils effectuent des compléments aux actions standards ou s'y substituent
  16. Dries Buytaert, DrupalCon 2008, Szeged (Hongrie), 27/8/2008
  17. (en) « PHP-GTK », sur php.net (consulté le ).
  18. « Project usage overview », sur drupal.org (consulté le ).
  19. http://drupal.org/project/views Views
  20. http://drupal.org/project/cck CCK
  21. http://drupal.org/project/image image
  22. D'où la boutade drupaliste : Vos fonctions n'appellent pas Drupal. C'est lui qui les appelle
  23. À partir de sa version 6, Drupal identifie de lui-même plusieurs zones à traduire, rendant le t() superflu pour elles
  24. « Proof of Concept : Connecting OpenLaszlo to Drupal », sur Drupal.org, (consulté le ).
  25. http://www.unleashedmind.com/files/drupal-learning-curve.png
  26. « API reference », sur drupal.org (consulté le ).
  27. « L'annuaire des prestataires Drupal en France », sur drupal.fr (consulté le ).
  28. http://szeged2008.drupalcon.org/, http://paris2009.drupalcon.org/, http://cph2010.drupal.org/, http://london2011.drupal.org/
  29. « Drupalcon Boston 2008 », sur drupalcon.org (consulté le ).
  30. « Drupal 8 and Distributions », sur www.faichi.com (consulté le )
  31. (en) « Creating a new Drupal application with Composer », sur acquia.com (consulté le ).
  32. (en) « Tripal | Tripal », sur tripal.info (consulté le )
  33. « Open Atrium », sur Drupal.org, (consulté le ).
  34. http://drupal.org/project/commerce_kickstart
  35. « Opigno LMS | Learning Management System based on Drupal », sur www.opigno.org (consulté le )
  36. Opigno LMS
  37. Ayush Jain, « Open Social Drupal 8 Distribution — Building Social Communities with Drupal 8 », sur Medium, (consulté le )
  38. Paquets Drupal de la distribution Debian GNU/Linux.

Annexes

Bibliographie

Drupal a été le sujet de plusieurs ouvrages :

Articles connexes

Liens externes

Sur les autres projets Wikimedia :