Concevoir et déployer. Drupal. ses sites web avec. 2 e édition. Préface de Edwy Plenel. Groupe Eyrolles, 2009, 2010, ISBN : 978-2-212-12780-5



Documents pareils
Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Joomla! Création et administration d'un site web - Version numérique

Drupal, pour quel usage? Comment se positionne Drupal? Les fonctionnalités de Drupal et de son écosystème. L'architecture technique et logicielle Le

PrestaShop 1.6 Créer un site de e-commerce

Cursus 2013 Déployer un Content Management System

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Utiliser un CMS: Wordpress

Site web établissement sous Drupal

PrestaShop 1.5 Créer un site de e-commerce

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Spip 2. Premiers pas pour créer son site web. Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Sandrine Burriel

PHP 5.4 Développez un site web dynamique et interactif

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Drupal (V7) : principes et petite expérience

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

Manuel du site internet Guichet Export pour la CCI Marseille Provence

Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte

Diffuser un contenu sur Internet : notions de base... 13

Introduction aux concepts d ez Publish

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

WordPress : principes et fonctionnement

Cahier des charges. «Application Internet pour le portail web i2n» Direction du Développement numérique du Territoire

Créer du contenu en ligne avec WordPress

PrestaShop 1.6. Créer un site de e-commerce. Prestashop Créer un site de e-commerce. PrestaShop 1.6 Créer un site de e-commerce 26,50

Savoir- Faire Offres mé1ers Offres technologiques

LIVRE BLANC. Migration de Magento Community Edition MD à Magento Enterprise Edition MD

Content Management System. bluecube. Blue Cube CMS V4.3 par Digitalcube

CMS Open Source : état de l'art et méthodologie de choix

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

1. Des chartes graphiques homogènes, élégantes, créatives

SPIP 1.9. Créer son site avec des outils libres. Michel-Marie Maudet Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Perline

Fabien Pinckaers Geoff Gardiner. OpenERP. Tiny. Pour une. gestion d entreprise efficace et intégrée. Groupe Eyrolles, 2008, ISBN :

Conférence. Comment améliorer le taux de conversion de votre boutique en ligne grâce au design sous Prestashop? Réalisé par ECOMIZ

BES WEBDEVELOPER ACTIVITÉ RÔLE

Pourquoi utiliser SharePoint?

Découvrir Drupal, le CMS Open Source de référence. Michel-Marie MAUDET Linagora /

Démarrer rapidement un site avec Drupal 7

Introduction à. Oracle Application Express

En date du 11 décembre 2008

Tour d horizon des CMS. Content Management System

Publication sur serveur distant

De Zéro à Construire des expériences digitales uniques toujours à la pointe du web avec Acquia Cloud Site Factory

PLATEFORME DE GESTION DE CONGRÈS SCIENTIFIQUES. 12 mars 2015

Un site web collaboratif avec Drupal. Judith Hannoun - Journées INSHS 16 Octobre 2012

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

Devenez un véritable développeur web en 3 mois!

PLATEFORME DE GESTION DE CONGRÈS SCIENTIFIQUES. h tt p : / / w w w. s c i e n c e s c o n f. o rg

Groupe Eyrolles, 2003, ISBN : X

Créer un site e-commerce avec PrestaShop Cloud Mise en place et suivi du projet

1 Avant-Propos 5 Remerciements. 9 Usages, contraintes et opportunités du mobile. 33 Site ou application : quelle solution choisir? Table des matières

Manuel d utilisation du web mail Zimbra 7.1

Bien architecturer une application REST

CREG : versailles.fr/spip.php?article803

Formation Webmaster : Création de site Web Initiation + Approfondissement

Manuel d utilisation de mon.vie-publique.fr

PLATEFORME DE GESTION DE CONGRÈS SCIENTIFIQUES

Groupe Eyrolles, 2005,

Guide d utilisation. Version 1.1

PrestaShop Cloud. Créer un site e-commerce avec. PrestaShop Cloud. Mise en place et suivi du projet. Créer un site e-commerce avec

REX gros projets Drupal. Drupal Camp Toulouse Novembre - +qdelance

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Travaux pratiques. avec. WordPress. Karine Warbesson

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

Utilisation du CMS (Content Management System) Wordpress

Manuel du composant CKForms Version 1.3.2

TP 6 Installation et configuration d une site internet avec un CMS Illustration avec Wordpress

Logiciel photothèque professionnel GUIDE D UTILISATION - 1 -

Créer et animer une boutique en ligne avec Wordpress (environnement PC et MAC)

Description de Produit Logiciel. AMI News Monitor v2.0. SPD-AMINM-10 v1.0

Manuel d utilisation du site web de l ONRN

Programme CREATION SITE INTERNET (CMS Wordpress)

Mise en lumière de votre excellence

Sommaire. 1. Présentation de WordPress. 2. Hébergement et installation. 3. Prise en main, ajouter des contenus

L externalisation de vos logiciels entreprises : une solution aux problèmes de coûts, de sécurités et de réactivités

VOLUME 1 CRÉATION D UN SITE WEB

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Website Express Créer un site professionnel avec Orange

Web & Libre. Outils pour être présent sur le net librement

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

Thunderbird est facilement téléchargeable depuis le site officiel

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

CMS Modules Dynamiques - Manuel Utilisateur

Formation Découverte du Web

Découvrir le CMS. et l utiliser dans une approche pro!

Drupal vs La concurrence

Tutoriel : Ecrire un article sur le site de la TEAM GSAS

Démarrer et quitter... 13

Algoba Systems valoriser et partager leur patrimoine numérique Orphea Studio

WordPress, thèmes et plugins : mode d'emploi

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

mon site web via WordPress

Fonctionnalités.

Transcription:

Yo r a n B r a u l t Concevoir et déployer ses sites web avec Drupal 2 e édition Préface de Edwy Plenel Groupe Eyrolles, 2009, 2010, ISBN : 978-2-212-12780-5

Table des matières AVANT-PROPOS... 1 Pourquoi ce livre? 2 À qui s adresse-t-il? 2 Structure de l ouvrage 3 Remerciements 5 1. RAPPELS UTILES SUR LES CMS... 7 L histoire du Web 8 Le fond et la forme 9 Taxonomie des contenus 10 Du contenu statique au contenu dynamique 11 Des droits et des rôles 12 Les commentaires 13 Un CMS, mais pour quoi faire? 14 En résumé 15 2. DRUPAL, UN CMS EXTENSIBLE... 17 L architecture de Drupal 18 Pérennité des contenus et des modules 20 Les caractéristiques majeures de Drupal 21 La liberté des formats d entrée 21 Un moteur de thème performant 22 Une taxonomie native 22 Internationalisation 22 Gestion des droits 23 Ouverture aux bases de données 23 Performances 23 Dimensionnabilité 24 La licence GPL v2 de Drupal 24 En résumé 25 3. BIEN DÉFINIR SON PROJET... 27 Quel est votre objectif? 28 De l objectif au storyboard 28 Mettre en place le scénario (storyboard) 29 Se plonger brièvement dans les détails 30 Quels sont vos types de contenu? 31 Les rôles de vos utilisateurs 31 Prévoir vos contraintes techniques 32 Le système d information 33 Le contexte technique 33 Votre public et la fréquentation escomptée 33 En résumé 35 4. METTRE EN PLACE SON ENVIRONNEMENT DE DÉVELOPPEMENT37 Les technologies mises en œuvre 38 Le service HTTP 38 Le langage PHP 39 La base de données 39 Le système d exploitation 40 Création de la plate-forme de développement 41 Création d un environnement WAMP 41 Installation de WampServer 41 Test de la plate-forme 42 Repérer les fichiers source 44 Création d un environnement LAMP 44 Considérations sur les distributions 44 Installation d Apache 45 Repérer les fichiers source 46 Installation de MySQL 47 Installation de phpmyadmin 48 Création d un environnement MAMP 49 Installation de la plate-forme 49 Lancement des services Apache et MySQL 50 Choix des préférences 51 Accès à phpmyadmin 52 Test de l installation PHP 53 Téléchargement de Drupal 53 Site de téléchargement 53 Téléchargement de la traduction française de Drupal 55 Installation des sources de Drupal 55 Décompression des archives 55 Comprendre la structure des dossiers 56 Création du paramétrage initial 57 Création de la base de données 58 Initialisation de l installation Drupal 58 Sélection de la langue 58 Configuration de la base de données 59 Groupe Eyrolles, 2009 IX

Drupal 6 Concevoir et déployer ses applications web Configuration du site 60 Informations sur le site 61 Compte administrateur 61 Fuseau horaire 62 URL simplifiées 62 Notification des mises à jour 63 Fin de l installation 63 Résolution des problèmes techniques 64 Problèmes de droits 64 Mauvais fichier de configuration 65 Impossible d activer les URL simplifiées 65 Problème de base de données 66 Courrier de confirmation non reçu 66 En résumé 67 5. ADMINISTRER DRUPAL ET SES MODULES... 69 Premier regard sur l administration 70 Accéder à l administration 70 La construction du site 70 La configuration du site 71 La gestion des utilisateurs 71 La gestion du contenu 71 Les rapports 72 Terminer l installation de Drupal 72 Utilisation du tableau de bord 72 La tâche de maintenance cron 73 La gestion des modules 74 Activer et désactiver un module 74 Trier l administration par modules 76 Les modules standards 77 Téléchargement d un nouveau module 80 Choisir vos modules 81 Ai-je vraiment besoin de ce module? 81 Ce module est-il stable? 82 Ce module survivra-t-il? 82 Installer un module 84 Désinstaller un module 85 Soumettre une anomalie 86 Le paramétrage général de Drupal 87 Boîte à outils image 88 Date et Heure 88 Informations 89 Journalisation et alertes 90 Rapports d erreur 90 Transfert de fichiers 91 Système de fichiers 92 En résumé 93 6. GÉRER LES UTILISATEURS...95 Rôles, permissions et utilisateurs 96 Créer vos propres rôles 97 Gérer les permissions par rôle 97 Permission du module Comment 98 Permissions du module Node 99 Permissions du module Contact 100 Permissions du module Path 100 Permissions du module Search 101 Permissions du module Upload 101 Permissions du module User 101 Paramétrage des comptes utilisateur 102 Qu est-ce qu un compte utilisateur? 102 Choix du mode de création d un compte utilisateur 103 Mode Administrateur seul 103 Mode Sans approbation 103 Mode Avec approbation 104 Paramétrage des courriels liés aux étapes de création d un compte 105 Signatures et portraits 106 Gestion des utilisateurs 108 Création manuelle d un utilisateur 108 Création d un compte par l utilisateur lui-même 110 Administrer les comptes utilisateur 111 Changer rapidement d utilisateur 113 Règles d accès 115 La page Mon compte 116 Accéder à Mon compte 117 Modification du profil 117 Étendre le profil de l utilisateur 118 En résumé 121 7. CRÉER DU CONTENU...123 Paramétrer les types de contenu 124 Les types de contenu 124 Modification du type de contenu Article 124 Identification du contenu 125 Les champs du formulaire de contribution 125 Procédure de publication 126 Paramètres des commentaires 127 Mode de discussion 127 Ordre des commentaires 128 Pagination des commentaires 128 Gestion des commentaires 128 Commentaires des visiteurs anonymes 129 Champ sujet d un commentaire 129 Gestion de l aperçu 129 X Groupe Eyrolles, 2009

Emplacement du formulaire de commentaires 130 Création d un contenu de type Article 130 Le rôle Contributeur 130 Formulaire de création d un article 131 Le résumé d un article 132 Décrire votre création 133 Attacher un fichier 133 Aperçu avant sauvegarde 135 Enregistrement de l article 135 Nœuds, chemin interne et alias 136 Du permalien à l URL publique 136 Automatiser les alias 138 Ne pas perdre en référencement 139 Administration des contenus 140 Publication de l article 140 Retour à la page d accueil 141 Supprimer un article 142 Les commentaires 143 Ajout d un commentaire 143 Réponse aux commentaires 144 Administration des commentaires 146 Les formats d entrée 148 Fonctionnement d un format d entrée 148 Configuration d un format d entrée 150 Droits sur un format d entrée 152 Le format des commentaires 153 Le format d entrée PHP 153 Ajouter de nouveaux filtres 154 Ajouter de nouveaux formats 155 Mettre en place un éditeur visuel 156 Gérer les images dans un éditeur visuel 162 En résumé 167 8. CRÉER DES CONTENUS AVANCÉS... 169 Structurer les contenus entre eux 170 Drupal et les livres 170 Création de la FAQ 171 Création des sections de FAQ 172 Organisation des pages de livre 173 Gestion des révisions 175 Consultation des révisions 175 Administration des révisions 176 Classer les contenus 177 Qu est-ce que la taxonomie? 177 À quoi sert la taxonomie? 178 La taxonomie et Drupal 178 Ajouter un nouveau vocabulaire 179 Ajouter des termes 182 Associer des contenus à des termes 183 Recherches par terme 185 Ajouter de nouveaux types de contenu 188 Ajout de types simples 189 Ajout de types complexes 191 Le module CCK 191 Création du type de contenu Référence 192 Traitement des champs Titre et Corps 193 Ajout des nouveaux champs 194 Ajout d un champ multiple 195 Ajout d un type de champ 196 Ordonnancement des champs 198 Affichage des champs 199 Création d un contenu Référence 199 CCK et les fichiers attachés 201 Les autres types de champs CCK 202 Les limites de CCK 203 Créer des listes de contenus 204 Création des vues Articles et Billets 204 Fonctionnement de Views 206 Construction de la liste 206 Tester l affichage 209 Duplication de vues 210 Les performances de Views 210 Étendre le modèle de droits 211 En résumé 213 9. STRUCTURER LES PAGES...215 Gérer les blocs 216 Le modèle de présentation 216 La liste des blocs 217 Les blocs personnalisés 219 Création d un bloc personnalisé 219 Suppression d un bloc personnalisé 221 Gérer la visibilité des blocs 221 Des blocs visibles en fonction du chemin 221 Des blocs visibles par PHP 225 Visibilité des blocs de modules 226 Gérer les menus 228 Structure des menus 228 Gestion des chemins 229 Création d un élément de menu 230 Ajouter un bloc de menu 232 En résumé 237 Table des matières Groupe Eyrolles, 2009 XI

Drupal 6 Concevoir et déployer ses applications web 10. GÉRER LES LANGUES... 239 Traduction des contenus et traduction des interfaces 240 Traduction des interfaces 240 La liste des langues 240 Négociation de la langue 241 Réglage des préfixes 242 URL spécifiques 242 Changer de langue 243 Ajout d une nouvelle langue 244 Ajout d une traduction 246 Traduction des contenus 249 Page de garde multilingue 252 En résumé 253 11. MODIFIER L APPARENCE... 255 Qu est-ce qu un thème? 256 Un thème, ça change tout! 256 Thème et moteur de thème 256 Développeur, Administrateur et Thèmeur 257 Où allons-nous? 259 Gérer les thèmes 260 L administration des thèmes 260 Paramétrer son thème 261 Paramétrages par thème 263 Paramétrages spécifiques d un thème 263 Paramétrage des blocs par thème 265 Installer un nouveau thème 267 Changer les pages d erreur 269 Régler le thème d administration 271 Créer son propre thème 271 Qu est-ce qu un modèle? 271 L imbrication des modèles 273 Création d un thème personnalisable 274 Premier niveau de personnalisation : styles et scripts 277 Utiliser les feuilles de style 277 Utiliser les scripts 281 Second niveau de personnalisation : les modèles 282 Modifier le modèle de page 283 Modifier le modèle des blocs 286 Modifier le modèle des contenus 287 Modifier le modèle des commentaires 289 Troisième niveau de personnalisation : la fonction theme() 290 Pourquoi aller plus loin? 290 Vision générale du système de thèmes de Drupal 291 Utiliser les noms de modèles éligibles 292 Noms de modèles éligibles pour le hook Page 293 Noms de modèles éligibles pour le hook Node 293 Noms de modèles éligibles pour le hook Block 294 Modifier les modèles invisibles 295 Personnaliser une fonction de thème 297 Enrichir les variables d un modèle 301 Enrichir les variables de tous les modèles 304 Le résultat 305 En résumé 305 12. AJOUTER DES FONCTIONNALITÉS...309 Ajouter la syndication à votre site 310 Qu est-ce qu un flux RSS? 310 Les lecteurs de flux 310 Flux des contenus 312 Flux par taxonomie 314 Flux des commentaires 315 Créer des flux personnalisés 315 Ajouter la notification sur les nouveaux commentaires 317 Ajouter une lettre d informations 319 Prendre en charge l OpenID 325 Prendre en charge les Gravatars 328 Ajouter un formulaire de contact 330 Ajouter un module d impression et vos contenus en PDF 333 Ajouter la notation de vos contenus 337 Qu est-ce qu une notation de contenu? 337 Voting API et Fivestar 337 Les contenus les mieux notés 339 En résumé 343 13. AUTOMATISER LES TÂCHES RÉCURRENTES...345 Créer des flux de travaux (workflows) 346 Actions et déclencheurs 352 Principe de fonctionnement 352 Création d une action simple 352 Création d une action avancée 355 En résumé 357 14. ÉCRIRE SON PREMIER MODULE...359 Prérequis 360 Pourquoi faire son propre module? 360 Des modules et des hooks 362 Structure interne d un module 364 Organisation générale 364 Le fichier de description du module 364 XII Groupe Eyrolles, 2009

Le code du module 365 Implémentation d un hook 365 Activation du module 367 En résumé 367 15. METTRE SON SITE EN PRODUCTION... 369 Mettre à jour son installation Drupal 370 Pourquoi parler de cela maintenant? 370 Doit-on toujours tout mettre à jour? 370 Le tableau de bord des mises à jour 371 Mise à jour du code source 373 Mise à jour de Drupal 373 Mise à jour d un module 375 Mise à jour d un thème 375 Mise à jour de la base de données 375 Sauvegarde de la base de données 375 Le script update.php 376 Si tout va mal... 378 Avez vous bien testé? 379 Les tests fonctionnels 379 Les tests techniques 379 Validez! 380 De l intégration à la production 381 Choisir son hébergement 381 Acheter son nom de domaine 382 Le premier déploiement 383 Copier les sources du site 383 Mettre en place la base de données 385 Les déploiements suivants 387 Performances 389 Vision générale des performances 389 Les performances de Drupal 390 Améliorer les performances du serveur 392 Gestion des caches 392 Paramétrage du cache 394 Accélérateurs de code PHP 395 Le cache de Drupal en mémoire 396 Accélérer le journal 397 Améliorer les performances du navigateur 397 Compression des pages 397 Optimisation des feuilles de style 397 Optimisation des scripts 398 Vidange des caches 399 Cron 400 Gérer le multisite 401 En résumé 403 16. UN REGARD SUR DRUPAL 7...405 Amélioration de l ergonomie d utilisation 406 Amélioration de l administration 406 Un nouveau thème 406 Barre de section et organisation de l administration 406 Une administration non intrusive 407 Une barre de raccourcis personnalisable 408 Des menus contextuels 408 Un peu d aide! 409 Amélioration de la création de contenus 409 Gestion simplifiée du résumé 409 Les onglets verticaux 410 Simplification de la sélection des formats de texte 410 Intégration de CCK 411 Un nouveau système de base de données 411 Autres évolutions notables 413 Les nouveaux minima 413 Amélioration des performances 413 En résumé 413 INDEX...415 Table des matières Groupe Eyrolles, 2009 XIII

Drupal, un CMS extensible Drupal n est pas un CMS comme les autres. Partant d un système somme toute traditionnel, il n a cessé d évoluer pendant plus de huit ans, avec pour seule idée de ne jamais fermer aucune possibilité tout en recherchant une efficacité maximale. De ce paradoxe a découlé une architecture atypique et performante, à mi-chemin entre le logiciel «clés en main» et la plate-forme de développement, permettant ainsi de construire tout type de site web, depuis le simple blog personnel jusqu au plus moderne des réseaux sociaux. SOMMAIRE B L architecture atypique de Drupal B Comment Drupal interprète les fondamentaux d un CMS B Comment Drupal utilise les bases de données B Les performances et la «dimensionnabilité» de Drupal B La licence de Drupal Groupe Eyrolles, 2009

Drupal 6 Concevoir et déployer ses applications web L architecture de Drupal Drupal fait partie de la famille des CMS libres à vocation généraliste écrits en PHP. Mais présenté ainsi, il n est au fond qu un parmi trentecinq de ses frères et sœurs. Ce qui amène inévitablement à la question suivante : Qu a donc Drupal de si particulier? Dries, l initiateur de ce logiciel, définit Drupal comme un «assembleur rapide de site web». Cette image peut sembler un peu courte, mais définit cependant assez bien une capacité à créer en un minimum de temps des sites très variés en s appuyant sur une architecture ultra modulaire, d où la notion d assemblage. CULTURE L histoire de Drupal L histoire de Drupal commence en 1999 lorsque Dries Buytaert, alors étudiant à l université d Anvers, cherche à créer un réseau sans fil pour partager sa connexion ADSL (un luxe pour l époque) avec ses compagnons de chambrée. Vint alors le besoin d un site web pour partager le statut de ce réseau. Lorsque Dries est diplômé, le site est transféré sur l Internet sous le nom drop.org. Ce drôle de nom est simplement le fruit d une erreur de frappe de Dries qui voulait en fait acheter le domaine dorp.org («village» en néerlandais). L erreur ne posa pas de problème à la communauté de passionnés des technologies du Web qui commençait à se créer autour de ce site pour l expérimenter et le faire évoluer. Il y travaillèrent jusqu à ce que les sources soient libérées en 2001 sous le nom de «Drupal» (le mot «drop», en néerlandais, se prononçant «druppel», était trop compliqué à prononcer pour des anglophones). En octobre 2004, la version 4.5 de Drupal est livrée et forme les contours «définitifs» de ce que nous en connaissons aujourd hui. Modularité ne signifie pas simplement extensibilité. La majorité des CMS modernes sont extensibles. Généralement formés d un corps dense intégrant la gestion du contenu, des commentaires, du rendu visuel, des flux, etc., il est toujours possible de leur adjoindre quelques greffons (ou plug-ins, ou encore composants) dont le but sera d amener telle ou telle nouvelle fonctionnalité. Dans cette approche, le CMS, qui forme un ensemble monolithique, ne peut être étendu que par des «ouvertures» qui auront été préalablement pratiquées. Il est donc délicat d étendre ce genre de produit de manière organique. En effet, que se passe-t-il lorsqu un développeur veut changer un aspect auquel ne correspond aucune ouverture? Il attend généralement avec impatience que sorte une nouvelle version du produit, disposant des nouvelles portes dont il a besoin. Ou pire, il perce lui même ses propres portes, fragilisant ainsi l édifice. Dès son origine, Drupal a pris une direction différente. Son architecture interne consiste en un noyau de très petite taille, ne contenant que les fonctionnalités essentielles (gestion des requêtes HTTP, du cache, etc.), 18 Groupe Eyrolles, 2009

2 Drupal, un CMS extensible Figure 2 1 L architecture de Drupal déléguant ainsi l ensemble des traitements fondamentaux à des modules. Les modules vont à leur tour déléguer certains traitements à d autres modules, et ainsi de suite jusqu à fournir un résultat au noyau, par exemple une page XHTML. Pour les aider dans cette tâche, Drupal dispose d une bibliothèque très complète de fonctions regroupées par thématique appelées API (FormAPI, SchemaAPI, MenuAPI, etc.). Ces dernières permettent aux modules d être plus simples et lisibles, et donc de contenir moins de bogues. C est ainsi que pour Drupal, chacune des fonctions fondamentales d un CMS comme la gestion du contenu, des commentaires ou encore des fichiers attachés est prise en charge par un module autonome. La conséquence directe de cette approche est un système extrêmement robuste qu il est difficile de déstabiliser. L autre implication de cette architecture est que chaque fonctionnalité de Drupal a été conçue dès l origine pour pouvoir être modifiée ou remplacée par un module. Partie intégrante de tous les traitements, le champ d action du module est donc beaucoup plus large que celui d un simple greffon, ce qui explique en grande partie la multitude de modules Drupal disponibles aujourd hui. Vous désirez authentifier vos utilisateurs sur un service LDAP? Il existe un module pour cela. Vous voulez accéder à votre contenu via le protocole webdav? Il existe également un module. Vous désirez importer un contenu à partir d un fichier CSV, Groupe Eyrolles, 2009 19

Drupal 6 Concevoir et déployer ses applications web monter une boutique en ligne, intégrer un géolocalisation, ajouter des recherches par facette? Des modules existent pour toutes ces tâches. Au moment de la rédaction de ce livre, et rien que pour la version 6 de Drupal, le dépôt drupal.org comptait plus de 3 400 modules libres et donc gratuits, répartis sur une trentaine de domaines fonctionnels. Dans les rares cas où vous ne trouveriez pas votre bonheur, la création d un nouveau module est d une grande simplicité pour qui possède quelques connaissances basiques en SQL/PHP. En résumé, cette architecture modulaire est l atout majeur de Drupal, lui octroyant une grande robustesse alliée à une extrême souplesse. Il peut ainsi coller à tous les usages. Drupal est donc effectivement une machine à assembler rapidement des sites web. Cet atout n est cependant pas sans danger. Nous y reviendrons plus en détail par la suite, mais sachez que tous ces modules ne sont pas loin de là de qualité et de maturité égales. Il est donc primordial de choisir avec grand soin les modules que vous intégrerez à votre site. Cela consiste généralement à exclure les modules qui ne sont pas encore déclarés comme stables, à étudier avec intérêt la liste des anomalies non résolues, et à consulter les statistiques fournies sur le site drupal.org qui indique pour chaque module le nombre de sites l utilisant effectivement, ce qui constitue un bon indicateur de son niveau d utilité. Enfin, si vous envisagez d utiliser Drupal pour un grand projet, sachez qu il est délicat de se baser uniquement sur les modules existants sans risquer d obtenir un édifice lent et lourd. Il vous faudra dans ce cas faire appel à un développeur capable de créer pour votre projet, des modules spécifiques et optimisés. Pérennité des contenus et des modules Avec une telle architecture, Drupal évolue très vite, ce qui peut, à juste titre, inquiéter celle ou celui qui se préoccupe de la pérennité de son site, et particulièrement de son contenu. En réalité, ce risque a été circonscrit par un mécanisme de mise à jour inclus dans la logique même des modules, visant à garantir la conversion des données d une version à l autre de Drupal. Chaque développeur a ainsi à cœur de maintenir ce qui est appelé le «chemin de mise à jour» (upgrade path) assurant que les données puissent être automatiquement transformées d une version de Drupal à n importe quelle version suivante. Ces chemins de mise à jour sont d autant plus sûrs qu il s agit de ceux de Drupal lui-même ou de modules «réputés» (.cck, par exemple). Ce qui n empêche pas, nous le verrons dans cet ouvrage, d être toujours extrêmement prudent sur l application de telles mises à jour. 20 Groupe Eyrolles, 2009

En revanche, concernant les modules eux-mêmes, aucune compatibilité ascendante n est assurée pour les API d une version majeure à une autre version majeure de Drupal. En d autres termes, un module qui fonctionne avec Drupal 6 n est pas assuré de fonctionner avec Drupal 7. C est donc aux développeurs des modules qu incombe la responsabilité de la migration de leur projet d une version à l autre. L aspect positif de cette approche est un produit qui évolue très rapidement dans le sens de la technologie. La contrepartie négative apparaît avec la forte montée de Drupal dans la sphère professionnelle. En effet, lorsque vous avez développé des modules personnalisés pour vos projets, il est difficile d accepter de devoir tout «casser» pour «simplement» monter vers la version suivante. En tout état de cause, cet aspect est à prendre en compte lors du chiffrage de la migration de vos projets. Pour pondérer un peu cette aspect négatif, il faut comprendre que la communauté maintient systématiquement les deux dernières versions majeures de Drupal : la version courante, et la version précédente. Au rythme d une version annuelle, cette organisation laisse donc un an pour permettre aux développeurs de migrer leurs modules, ce qui dans la pratique est largement suffisant. Vous concernant, cela implique qu à partir du moment où vous avez mis en œuvre Drupal, vous avez deux ans devant vous pour envisager sereinement la migration. 2 Drupal, un CMS extensible Les caractéristiques majeures de Drupal La liberté des formats d entrée Comme nous l avons vu, un CMS se caractérise par la séparation entre le fond et la forme. Drupal applique ce principe à la lettre en n imposant à aucun moment le format des contenus que vous saisissez. Pour y parvenir, l outil se repose sur un concept de «chaîne de transformations» appelé «format d entrée» qui va, par traitements successifs, produire un contenu au format XHTML exploitable sur le Web. Vous avez ainsi la possibilité de définir autant de formats d entrée que vous le désirez, ainsi que chacune de leurs étapes de transformation appelées «filtres». Les filtres étant fournis par des modules, vous pouvez soit vous contenter de ceux présents en standard, soit en ajouter de nouveaux vous permettant par exemple de prendre en charge des syntaxes plus exotiques (syntaxe Wiki ou phpbb), des outils de correction de syntaxe HTML, des filtres maquillant les adresses de courriel pour éviter les pourriels, etc. Les chaînes de filtres ainsi constituées peuvent ensuite être appliquées selon les droits des utilisateurs et les types de contenus rédigés. Groupe Eyrolles, 2009 21

Drupal 6 Concevoir et déployer ses applications web Un moteur de thème performant Une fois le contenu formaté au standard XHTML, le moteur de thème de Drupal intervient. S appuyant sur un jeu de modèles (templates PHP), ce module d une grande souplesse rend possible toutes les fantaisies visuelles, comme faire varier l apparence du site selon la section où l on se trouve, le type de contenu affiché, le type de liste de résultats, ou encore un schéma spécifique d URL. Au-delà de sa puissance, le point intéressant de ce moteur est qu il n a pas été pensé pour le développeur PHP, mais pour l intégrateur, aussi appelé «thèmeur». Il est donc très simple à mettre en œuvre sans pour autant connaître les structures internes de Drupal, l essentiel du paramétrage se faisant par la nomenclature des modèles. Le code des pages produit par Drupal est particulièrement propre et optimisé. Globalement, sans paramétrage et avec les thèmes standards, Drupal fabrique des pages parfaitement compatibles avec les standards XHTML/CSS, avec en prime une excellente accessibilité. Enfin, il est important de noter que les URL de Drupal sont facilement indexables par les moteurs de recherche et sont totalement paramétrables. Ce point intéressera notamment tout public sensibilisé aux problématiques de référencement. Une taxonomie native Contrairement à d autres CMS populaires qui limitent la catégorisation des contenus à seulement deux niveaux, Drupal intègre un moteur de taxonomie permettant des classements et des recherches sur un nombre illimité de critères, reprenant donc mot pour mot le concept de taxonomie que nous avons abordé au chapitre précédent. Les taxonomies sont appelées «vocabulaires» et les termes (ou taxons) qu ils contiennent peuvent être hiérarchisés les uns avec les autres. Un vocabulaire peut être rendu obligatoire pour une série définie de types de contenus. Drupal permet également l étiquetage libre (ou free tagging) qui consiste à associer une série de mots-clés, sans contrainte, à un contenu. Cette capacité de catégorisation de contenu est ensuite utilisable pour les recherches, l affichage par section, le croisement des critères, ou encore par des modules tiers, comme pour l affichage de nuages d étiquettes. Internationalisation Comme beaucoup de projets libres, Drupal est un produit développé depuis plus de huit ans par des développeurs venant des quatre coins de 22 Groupe Eyrolles, 2009

la planète. C est donc sans surprise que l on disposera d un produit pouvant s afficher, selon les choix du visiteur ou les réglages de son navigateur, en plus de trente langues différentes, y compris asiatiques et arabes. Mais l aspect international de Drupal ne s arrête pas à l interface : il intègre en standard la capacité de gérer un même contenu en autant de langues que désiré, avec un système collaboratif de traduction des contenus. 2 Drupal, un CMS extensible Gestion des droits Comme pour la taxonomie, la gestion des droits Drupal est poussée très loin pour obtenir un niveau de contrôle que l on a davantage l habitude de voir sur un système d exploitation. En effet, là où d autres CMS se contentent d une vision administrateurs/ abonnés rendant délicat l octroi de droits particuliers à certains abonnés, Drupal adopte la classique vue permissions/rôles/utilisateurs. Il est ainsi possible de manière très simple de donner à un utilisateur le droit de corriger des contenus sans lui permettre d en créer, ou encore de modérer des commentaires sans qu il lui soit possible d aller plus loin. L inconvénient (tout relatif ) de cette approche est qu avec Drupal, la gestion des droits est une tâche à part entière qui doit être pensée au moment de la conception du site. Ouverture aux bases de données Beaucoup de CMS, surtout en PHP, se limitent à la simple prise en charge de la base de données MySQL. Sur cet aspect, Drupal adopte un positionnement agréablement agnostique (même si pour l instant, seules deux bases de données sont effectivement prises en charge). Les modules se reposent en effet sur une batterie de fonctions qui leur cachent complètement la nature de la base de données sous-jacente, y compris le point délicat de la création des tables. En résulte un CMS qui peut fonctionner nativement aussi bien sous MySQL que sous PostgreSQL. Drupal 7 va même encore plus loin avec la prise en charge de SQL Server, SQLight, etc. Performances Pour doper ses performances, Drupal utilise un système de cache très avancé. Pour ceux qui découvrent cette technique, un cache n est rien d autre qu une zone dans laquelle Drupal va stocker une page, un bloc ou un contenu précalculé pour ne faire les traitements qu une seule fois. Nativement, Drupal stocke son cache dans la base de données, mais comme toujours, cet Groupe Eyrolles, 2009 23

Drupal 6 Concevoir et déployer ses applications web aspect est modifiable par des modules pour permettre du cache en mémoire (extrêmement rapide) ou encore sur le système de fichiers. Ceci dit, se reposer totalement sur ce système de cache pour garantir les performances d un site à forte charge n est pas forcément très sage. En effet, Drupal ne sait pour l heure que mettre en cache les pages des visiteurs anonymes. Dès que l utilisateur est identifié, une partie de ce système de cache est désactivée, ce qui implique une baisse des performances. Ce problème ne touchera que peu de monde, car rares sont les sites dont la majorité de visiteurs est identifiée. Mais il faut malgré tout garder à l esprit ce travers dans les performances de Drupal lors de la conception de son site, en évitant par exemple de le surcharger de modules inutiles. Dimensionnabilité S agissant de sites à fort trafic, la capacité à monter en charge (scalability) devient un point crucial. Pour rappel, nous parlons ici de la possibilité d augmenter facilement l envergure du site (nombre d utilisateurs, trafic, nombre de contenus, etc.) sans pour autant perdre en performances. Cette augmentation peut être ponctuelle (pic de charge) ou structurelle (succès du site, extension d un département pilote à l entreprise en général, etc.). Dans ce dernier cas, la dimensionnabilité d un outil se traduit généralement par sa capacité à fonctionner sur plusieurs machines, ce qui dans notre cas est plus le problème de la base de données que du CMS en luimême. Malgré tout, Drupal apporte là aussi une flexibilité supplémentaire en acceptant l utilisation de PostgreSQL qui se révèle beaucoup plus linéaire dans sa montée en charge que MySQL. Enfin, Drupal 7 améliorera la prise en charge des architectures redondantes, déjà présente partiellement dans Drupal 6. Pour ce qui est d absorber une charge ponctuelle, Drupal exploite son architecture modulaire par un mécanisme de balance de charge. Il sera ainsi possible de paramétrer certains modules et même certains contenus (les blocs) pour se désactiver automatiquement en cas de pics de trafic. Le site fonctionnera ainsi en mode «dégradé» mais sans rupture de service. La licence GPL v2 de Drupal Drupal est un logiciel libre, et c est cette liberté qui rend possible le travail d une communauté entière de développeurs, de traducteurs, d auteurs d articles et de documentation, produisant jour après jour un outil encore meilleur. 24 Groupe Eyrolles, 2009

Ses sources, comme celles de l ensemble des modules, sont disponibles sous Licence GPL v2+ (au sens GPL v2, ou toute version postérieure). Vous avez donc le droit de copier le code sans payer de royalties, de mettre en place Drupal où vous le désirez, et de modifier le code qu il contient comme bon vous semble. En échange, si vous modifiez ce code et que vous le rendez public, vous avez obligation de le faire sous la même licence. Ce type de licence a fait naître une légende entretenue par nombre de personnes plus ou moins bien intentionnées qui voient d un mauvais œil que l on puisse mettre à disposition des ressources de qualité, alors qu eux gagnent leur vie en faisant la même chose. Cette légende prétend qu utiliser un logiciel libre comme Drupal vous obligerait à fournir à la communauté tout le code source de votre site. C est aussi vrai que faux. Pour le vrai, la licence de Drupal spécifie bien que tout nouveau module ou thème est un travail dérivé (derivative work) de Drupal lui-même, qui sera donc automatiquement sous Licence GPL v2 (http://drupal.org/licensing/faq#q7). En revanche si le code est nouveau (c est-à-dire s il ne s agit pas de la modification d un code existant), même s il est sous licence GPL, rien ne vous oblige à le publier, tant que vous ne le distribuez pas. Ce serait évidemment fortement apprécié, mais c est votre droit de ne pas le faire. En d autres termes, si vous fabriquez des modules pour le site Drupal de votre société (ou de votre client), rien ne vous oblige à les publier même s ils sont de toute façon sous GPL. En revanche, si vous fabriquez et vendez une tablette électronique qui embarque Drupal et vos modules, vous avez obligation de publication. Avec le libre, vous avez donc le choix au sens large du terme. CULTURE Libre et gratuit, la différence La confusion entre «libre» et «gratuit» qu entretiennent souvent journaux et médias mérite d être levée. le lecteur de PDF fourni par Adobe est totalement gratuit, certainement pas libre. Vous ne pouvez en avoir le code source pour l auditer par exemple, vous ne pouvez pas le traduire, ni en faire votre propre version et même son utilisation est soumise à conditions (conditions en général acceptées négligemment lors de l installation). Un logiciel libre est l inverse de tout cela. Vous disposez des sources, vous pouvez les lire, les modifier, les publier sous une autre forme. Et tout cela, plus que gratuitement : sans restriction aucune. 2 Drupal, un CMS extensible En résumé Drupal est un outil libre sous licence GPL v2, de même que l ensemble des modules que nous utiliserons dans cet ouvrage. L architecture de Drupal est modulaire et peut être étendue dans toutes les directions imaginables. Drupal implémente la quasi-totalité des concepts d un CMS. De par sa nature complexe, il est important de garder en tête l aspect performance qui peut devenir le point faible d un site Drupal. Groupe Eyrolles, 2009 25