Drupal

Drupal
Drupal
Druplicon.vector.svg
Drupal 7 screenshot.png
Développeur Dries Buytaert
Première version janvier 2001
Dernière version 7.9 (26 octobre 2011) [+/-]
Version avancée 7.0 rc 4 (30 décembre 2010) [+/-]
Écrit en PHP
Environnements Multiplate-forme
Langues Multilingue
Type CMS (système de gestion de contenu)
Licence GNU GPL
Site web drupal.org

Drupal [1] 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. Dries Buytaert, développeur initial du projet à partir de 2000 à l'université d'Anvers, le définit comme « assembleur rapide de site web » (Rapid website assembler). Il est utilisable tel que fourni[2] - sur toute base LAMP, WAMP ou MAMP - mais largement personnalisable et programmable ensuite. D'après son créateur, environ 500 000 sites l'utilisent en septembre 2009[3].

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

Sommaire

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 - comprenant typiquement 60 à 300 tables selon les modules activés - et une hiérarchie de fonctions toutes substituables permettant 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 4000 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[5] 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, etc. : la forme n'est plus assujettie à une architecture prédéterminée, ce qui rend le contenu aisément reconfigurable. Contrepartie de cette liberté : on 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

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"). 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émentera un compteur de revision 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.

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.

Il existait dans Drupal 6 plusieurs types de modules, les plus simples étant les suivants :

  • les modules de bloc, associés à des informations de petite taille (exemple : qui est en ligne ou combien de personnes, qui sont les derniers inscrits, quels sont les derniers posts, les plus populaires...). Leurs résultats s'affichent en marge des "grands" contenus, dans des marges de droite, gauche, haut ou bas.
  • les modules de nœud, qui engendrent ce qui n'est pas dans les marges : blog, forum, pages, formulaires, etc. Quatre simili-méthodes leur sont associables en standard : list, configure, save et view, qui indiquent respectivement comment le module doit signaler son existence, comment le configurer, comment sauver cette configuration et comment ce module affichera ses informations.

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 thémeur ou 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éboguage.

Les fonctions d'un module peuvent renvoyer trois choses :

  • un code d'erreur
  • rien, ce qui constitue un autre type d'erreur (WSOD : White Screen Of Death)
  • un vecteur ou un tableau (voire un tableau de tableaux) au sens de PHP. A ce niveau, il n'y a en principe encore aucune balise XHTML injectée. C'est le thème qui s'en chargera.

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 de 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 avec quelques clics de souris.

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 cosmétique, qui fait appel à des concepts bien distincts (ergonomie entre autres) et peut avoir avantage à être sous-traitée totalement à une officine spécialisée.

Il est géré partout où cela est possible par des entrées dans une 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, couleur et police où s'afficheront ces informations, et cela soit par réorganisation de blocs au tableau de bord, soit par modification des feuilles définissant le style de chaque bloc.

Administration des blocs

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

  • une information de placement (haut, bas, droite, gauche...),
  • une information de priorité (en général de -10 à +10) par rapport aux autres blocs ayant la même indication de placement,
  • et une information indiquant si ce bloc est activé (=doit être affiché) ou pas.

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[6] 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é.

  • Dans les deux cas, l'application se modifie donc à la volée sans nécessité de l'arrêter ;
  • En revanche, avec Drupal, il faut faire attention à n'activer (c'est-à-dire « ne faire prendre en compte par Drupal ») un module que si celui-ci est syntaxiquement valide (qu'il soit fonctionnel ou non), sans quoi c'est toute l'application qui provoque une erreur. Cela ne pose cependant pas de problème si on travaille depuis un environnement de développement intégré, comme Eclipse, Aptana, Zend Studio, etc., où l'on ne sauvegarde en principe pas le programme en cours tant que sa syntaxe n'est pas validée depuis l'environnement éditeur.

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.

  • On peut par exemple créer les rôles de validateur de contenu (qui approuve et/ou modifie les contenus soumis pour publication), de validateur de commentaires (qui n'a ces fonctions que sur la partie commentaires), etc.
  • On peut aussi décider que les utilisateurs non-connectés ne pourront utiliser que le format mediawiki pour entrer leurs textes, tandis que les abonnés au service auront le droit au XHTML total ou partiel avec entrée WYSIWYG, etc.

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 à mille fois 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.).

(Note : Cette décision qui peut surprendre est liée à l'évolution très rapide des pratiques sur l'Internet : un CMS 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, 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 coute 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) :

  • Versions 4.6 à 5 : book_toc($exclude = 0)
  • Version 6 : book_toc($bid, $exclude = array(), $depth_limit)  : Contrôle plus fin du résultat
  • version 7 : book_toc($bid, $depth_limit, $exclude = array())  : Permutation pour placer à la fin l'argument facultatif

Architecture

Langage hôte

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

Le code de Drupal obéit à une logique proche d'un développement Smalltalk : la plupart des fonctions sont de taille petite ou moyenne, et composées d'appels à d'autres fonctions de niveau d'abstraction de plus en plus proche des données de base. Ajouter ou modifier du code ne demande donc jamais de descendre à un niveau d'abstraction plus bas que strictement nécessaire.

Composants

Drupal comporte deux types de composants bien distincts :

  • un « cœur » fiable et robuste, largement testé
  • des « modules » de volume et qualité diverses développés librement par la communauté et mis à disposition de tous en l'état (1800 en mars 2008, 7210 en novembre 2010).

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 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 : 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[7], jusqu'à présent 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.

Récompenses

Dans le concours organisé par la société britannique Packt (en), Drupal s'est classé en 2008 premier au concours des meilleurs CMS, 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[4].

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[4]!.

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

Modules les plus utilisés (octobre 2008)

Ces statistiques[8] sont établies sur environ 85 000 installations de Drupal ayant activé le retour de statistiques. Les chiffres sont arrondis au millier pour lisibilité.

  1. Views (39 000) : présentation de listes de contenu sur des critères de son choix[9]
  2. Content Construction Kit - CCK (34 000) : création de nouveaux types de contenu par ajout de champs[10]
  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[11] : 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.)

Modules officiels

  • aggregator : Utilisé pour agréger du contenu syndiqué (flux RSS et RDF).
  • archive : Affiche un calendrier pour accéder aux archives.
  • block : Contrôle l'affichage des boîtes apparaissant en marge du contenu principal.
  • blog : Fournit un moteur de blog pour mettre à jour facilement et régulièrement une page web ou un blog.
  • blogapi : Permet aux utilisateurs de poster en utilisant les applications qui supportent les API blogue XML-RPC.
  • book : Permet aux utilisateurs de collaborer à l'écriture d'un livre.
  • comment : Permet aux utilisateurs de commenter et de discuter le contenu publié.
  • drupal : Permet aux membres d'ouvrir une session en utilisant un code d'identification Drupal, et peut signaler à un serveur central l'existence de votre site.
  • filter : Contrôle le filtrage du contenu en préparation pour l'affichage.
  • forum : Rend possible les fils de discussion à propos de sujets généraux.
  • help : Contrôle l'affichage de l'aide en ligne.
  • legacy : Fournit un système de mise à jour de Drupal.
  • locale : Permet la traduction de l'interface dans d'autres langues que l'anglais.
  • menu : Permettre aux administrateurs de personnaliser le menu de navigation du site.
  • node : Permet de soumettre le contenu et de l'afficher sur des pages.
  • page : Active la création de pages pouvant être ajoutées au système de navigation.
  • path : Autorise les utilisateurs à renommer les URL.
  • ping : Prévient les autres sites quand votre site a été mis à jour.
  • poll : Permet à votre site de collecter des votes sur différents sujets sous la forme de questions à choix multiples.
  • profile : Support des profils utilisateurs configurables.
  • queue : Permettait à la communauté de modérer le contenu. Ce module a été retiré des modules officiels depuis la version 4.7.
  • search : Permet la recherche par mots-clés dans l'ensemble du site.
  • statistics : Prend note des statistiques d'accès pour votre site.
  • story : Permet aux utilisateurs de soumettre des récits, articles ou du contenu similaire.
  • system : Manipule la configuration générale du site pour les administrateurs.
  • taxonomy : Permet l'organisation du contenu en différentes catégories.
  • throttle : Se charge du mécanisme d'autorégulation, pour contrôler la congestion du site.
  • tracker : Active le suivi des messages récents pour les utilisateurs.
  • upload : Permet aux utilisateurs d'envoyer et d'attacher des fichiers au contenu.
  • user : Gère l'inscription des utilisateurs et le système d'authentification.
  • watchdog : Tient un journal des événements du système.
  • wiki : Permet d'utiliser une syntaxe wiki.

Autres modules

Il existe 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 e-commerce. 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.

  • event : Permet d'attacher des informations de date à tout nœud, afin de l'afficher dans un calendrier des événements, ou dans un bloc regroupant les événements à venir.
  • Wysiwyg API : intègre à Drupal des éditeurs HTML tel TinyMCE ou FCKEditor
  • Modules permettant la saisie du contenu en forme Wikimedia, et d'avoir un wiki sous Drupal.

Bonnes pratiques

  • Drupal gère automatiquement les fonctions dont le nom obéit aux conventions qu'il suggère. Ces conventions peu contraignantes (monmodule_init(), monmodule_menu(), monmodule_form_alter()...), permettent en outre de se retrouver en terrain familier quand on utilise ou modifie un module écrit par autrui.
  • Les homonymies entre modules, que ce soit entre noms de permissions ou noms de fonctions, doivent être évitées avec soin.
  • Limiter le risque de conflits dans les noms de fonctions développées pour un site et celles pour les modules. Par exemple on peut préfixer les fonctions d'un module par un blanc souligné (_). Aussi, si l'on désire écrire une fonction de lookup, on la nommera par exemple _lookup(). Cette recommandation est souvent rappelée sur les sites de développeurs.
  • Chaque libellé destiné à l'utilisateur doit être argument de la fonction t() qui permettra d'afficher à la place, s'il existe, le libellé correspondant préalablement traduit dans l'une des langues définies comme préférées dans le navigateur[12]. Drupal est très efficace pour réaliser des sites multilingues.
  • 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.

  • France 24; site Drupal utilisant la possibilité d'affichage sur PDA.
  • Boucheron, exemple de site Drupal utilisant Flash interfacé avec MOVEX ERP et une base de données IBM DB2.

Le site drupal.org fait également état[13] 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 autre drupalistes[14], ce qui aide à se grouper par niveau dans les réunions nationales ou internationales.

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 :

  • Administrateur(s) de site et/ou de système
  • Architecte(s) de contenu
  • Développeur(s)
  • Concepteur(s) de thèmes, spécialiste(s) en ergonomie

Prestataires

Une liste de prestataires Drupal est tenue à jour[15] sur le site drupalfr.org. 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[16] permet à ceux qui le souhaitent des échanges intensifs pendant une semaine. Une autre est organisée aux États-Unis[17].

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

Téléchargeable gratuitement[18], 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, grâce à un choix libre des numéros de ports.

Open Atrium 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.

Pépinière de sites

Le site Drupalgardens[19] constitue une pépinière gratuite hébergeant plusieurs centaines de sites configurables en mode presse-bouton. Son modèle d'affaires est le suivant : un site à faible fréquentation coûte peu en ressources, et une limitation à 4 000 pages consultées par jour fait que les sites qui rencontrent le succès accepteront sans problème de payer un abonnement modique pour aller au-delà. L'inscription se fait au moyen d'un ticket d'entrée gratuit obtenu par demande sur le site.

Annexes

Notes et références

  1. prononcé en anglais /ˈdruːpəl/)
  2. Voir cette démo de Drupal en 10 minutes
  3. « Drupal, la machine à tout faire du Web », Rue89, 5 septembre 2009.
  4. a, b et c Liste des gagnants depuis 2006 sur le site de Packt
  5. Excepté les commentaires, gérés pour des raisons de performance dans une table qui leur est propre.
  6. 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
  7. Dries Buytaert, DrupalCon 2008, Szeged (Hongrie), 27/8/2008
  8. http://drupal.org/project/usage
  9. http://drupal.org/project/views Views
  10. http://drupal.org/project/cck CCK
  11. http://drupal.org/project/image image
  12. À partir de sa version 6, Drupal identifie de lui-même plusieurs zones à traduire, rendant le t() superflu pour elles
  13. http://drupal.org/node/132287
  14. http://www.unleashedmind.com/files/drupal-learning-curve.png
  15. http://drupalfr.org/annuaire-pro
  16. http://szeged2008.drupalcon.org/, http://paris2009.drupalcon.org/, http://cph2010.drupal.org/, http://london2011.drupal.org/
  17. http://boston2008.drupalcon.org/
  18. http://acquia.com/downloads
  19. http://www.drupalgardens.com

Bibliographie

Drupal a été le sujet de plusieurs ouvrages :

Articles connexes

Liens externes

Sur les autres projets Wikimedia :


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Drupal de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Drupal — 7 nach der Installation …   Deutsch Wikipedia

  • Drupal — Drupal …   Википедия

  • Drupal — Saltar a navegación, búsqueda Drupal …   Wikipedia Español

  • Drupal — Drup al, a. (Bot.) Drupaceous. [1913 Webster] …   The Collaborative International Dictionary of English

  • Drupal — Drupal …   Wikipedia

  • Drupal — Introducción Drupal es un “sistema de administración de contenido”. Esto significa que es un sistema para administrar el contenido de sitios Web, tal como artículos, fotos, u otros archivos. Drupal es sistema “dinámico”; en lugar de ser archivos… …   Enciclopedia Universal

  • Друпал — Drupal Тип Система управления контентом/ Написана на [1] …   Википедия

  • Dries Buytaert — at FOSDEM 2008. Dries Buytaert (born 19 November 1978 in Wilrijk, Antwerp, Belgium)[1] is an open source software programmer notable as founder and lea …   Wikipedia

  • Dries Buytaert — на FOSDEM 2008. Dries Buytaert (Дрис Байтаерт) родился 19 ноября 1978. Является open source software программистом, а также основателем и лидером [1][2][3] Байтаерт защитил докторскую диссертацию Computer Science 27 января 2008[4] в Университете… …   Википедия

  • CivicSpace — CivicSpace, formerly known as Deanspace and Hack4Dean, is a content management system founded in May 2004 by Zack Rosen and Neil Drumm. As implied by its previous names, it was used to power websites supporting the 2004 presidential campaign of… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”