Introduction 1. Les systèmes de gestion de contenu 11 2. Les avantages de Drupal 15 3. Le fonctionnement de Drupal 17 4. L'environnement de développement 20 5. L'installation de Drupal 25 6. Le passage de Drupal 6 à Drupal 7 35 7. Conclusion 35 Drupal et son architecture 1. L'arborescence des répertoires 37 2. La création dynamique des pages 39 3. Les entités 40 3.1 Le principe 40 3.2 Les types d'entité standard 41 3.3 La gestion des champs 42 4. Les structures de données : les types de contenu 43 5. Les contenus : les nœuds 45 5.1 Le principe des nœuds 45 1/11
5.2 Les révisions 48 5.3 Les traductions 50 6. La classification des données : la taxonomie 51 6.1 Les vocabulaires 51 6.2 Les termes 54 6.2.1 Les termes 54 6.2.2 Les termes parents 56 7. La gestion des utilisateurs et leurs droits d'accès 57 7.1 Les comptes utilisateurs 57 7.2 Les rôles 59 7.3 Les droits d'accès 61 8. L'organisation des pages 62 8.1 Les thèmes 62 8.2 Les régions 63 8.3 Les blocs 65 9. La gestion multisite 70 9.1 Le principe 70 9.2 La pratique 71 10. La recherche et l'indexation 72 11. Conclusion 76 Utiliser Drupal 1. La zone d'administration 77 1.1 La barre d'outils 77 1.2 La zone de configuration 78 2/11
2. Les types de contenu et les nœuds 84 2.1 La création d'un type de contenu 84 2.1.1 Les interfaces 84 2.1.2 Un cas pratique : le type Document 90 2.2 La création d'un nœud 93 2.2.1 Les interfaces 93 2.2.2 Un cas pratique 95 3. La taxonomie ou classification 97 3.1 La création d'un vocabulaire 97 3.1.1 Les interfaces 97 3.1.2 Un cas pratique 99 3.2 L'ajout de termes 101 3.2.1 Les interfaces 101 3.2.2 Un cas pratique 103 4. Les blocs 109 4.1 Les interfaces 109 4.2 Un cas pratique 114 5. Les utilisateurs et les droits 117 5.1 La création d'un rôle 117 5.2 L'attribution des droits d'accès 119 5.2.1 Les interfaces 119 5.2.2 Un cas pratique 120 5.3 La création d'un utilisateur 120 5.3.1 Les interfaces 120 5.3.2 Un cas pratique 123 6. Les champs 126 6.1 Le principe 126 6.2 Les types de champ 130 6.3 Des cas pratiques 131 3/11
6.3.1 L'ajout d'un champ à un type de contenu 131 6.3.2 L'ajout d'un champ à un terme 138 6.3.3 L'ajout d'un champ à un utilisateur 141 7. Conclusion 144 Étendre Drupal 1. L'importance des modules 145 2. La gestion des modules 147 2.1 L'installation, la désinstallation et la mise à jour 147 2.1.1 L'installation 147 2.1.2 La désinstallation 149 2.1.3 La mise à jour 151 2.2 L'activation et la désactivation 156 3. Les modules standard 157 3.1 La liste complète 157 3.2 Quelques modules en détail 160 3.2.1 Agrégation de flux RSS : Aggregator 160 3.2.2 Le blog : Blog 167 3.2.3 Le forum : Forum 169 3.2.4 Le sondage : Poll 178 3.2.5 La réécriture d'url : Path 183 3.2.6 Les styles d'image : Image 185 4. Les modules additionnels 194 4.1 Introduction 194 4.2 Un cas pratique 196 4.3 Le module Token 198 4.4 Les modules de gestion des champs 199 4.4.1 Le module Entity Reference 199 4/11
4.4.2 Le module Field Permissions 202 4.4.3 Le module Field Group 204 4.5 La gestion de l'affichage avec Views 207 4.5.1 Le principe 207 4.5.2 Les principaux types de vues 210 4.5.3 Les principaux types d'affichage 214 4.5.4 La configuration 215 4.5.5 La visualisation 217 4.5.6 La création d'une page de nœuds 218 4.5.7 La création d'un bloc de termes 230 4.6 La création de sections avec Context 233 5. Conclusion 239 Développer un module 1. La structure d'un module 241 1.1 Le fichier.info 241 1.2 Le fichier.module 242 1.3 Le fichier.install 244 2. Les hooks 245 2.1 Le principe de surcharge 245 2.2 Le fonctionnement 246 2.3 L'extension du système de hook 247 2.4 Les hooks disponibles 248 2.4.1 Les hooks du système 248 2.4.2 Les hooks de contenu 249 2.4.3 Les hooks de structure 251 2.4.4 Les hooks utilitaires 253 2.4.5 Les hooks de sécurité 253 2.4.6 Les hooks de module 254 2.4.7 Les hooks de tâche 254 2.4.8 Les hooks de recherche 255 5/11
2.4.9 Les hooks utilisateur 255 3. Quelques hooks en détail 256 3.1 Le hook hook_permission() 257 3.2 Les hooks de gestion des blocs 257 3.2.1 Le hook hook_info() 258 3.2.2 Le hook hook_block_configure() 259 3.2.3 Le hook hook_block_save() 260 3.2.4 Le hook hook_block_view() 261 3.3 Les hooks de menu 262 3.3.1 Le hook hook_menu() 262 3.3.2 Le hook hook_menu_alter() 268 3.4 Les hooks de gestion des nœuds 269 3.4.1 Le hook hook_node_insert() 269 3.4.2 Le hook hook_node_update() 270 3.4.3 Le hook hook_node_delete() 270 3.4.4 Le hook hook_node_validate() 271 3.4.5 Le hook hook_node_presave() 272 3.4.6 Le hook hook_node_view() 272 3.4.7 Le hook hook_node_load() 273 3.5 Le hook hook_user() 274 3.5.1 Le hook hook_user_insert() 274 3.5.2 Le hook hook_user_update() 275 3.5.3 Le hook hook_user_delete() 276 3.5.4 Le hook hook_user_presave() 276 3.5.5 Le hook hook_user_view() 277 3.5.6 Le hook hook_user_load() 278 3.5.7 Le hook hook_user_login() 278 3.5.8 Le hook hook_user_logout() 279 3.6 Le hook hook_theme() 280 4. Les tableaux de rendu 286 4.1 Le principe 286 4.2 L'utilisation dans Drupal 289 4.2.1 À l'affichage d'un bloc 289 6/11
4.2.2 À l'affichage d'une page 290 4.2.3 À la création d'un formulaire 291 5. Les formulaires 291 5.1 L'API de formulaire 291 5.1.1 Le principe de fonctionnement 291 5.1.2 Les types de composant 294 5.1.3 L'attribut #autocomplete_path 305 5.1.4 Les champs dynamiques 308 5.1.5 L'attribut #ajax 312 5.2 Les hooks de formulaire 319 5.2.1 Le hook hook_forms() 319 5.2.2 Les hooks hook_form_alter() ethook_form_form_id_alter() 321 6. Conclusion 323 Interagir avec Drupal 1. L'accès aux données 325 1.1 Le principe 325 1.2 Les types de requêtes 327 1.2.1 Les requêtes statiques 327 1.2.2 Les requêtes dynamiques 331 1.2.3 Les requêtes d'insertion 336 1.2.4 Les requêtes de mise à jour 339 1.2.5 Les requêtes de suppression 341 1.2.6 Les requêtes de fusion 341 1.3 L'enregistrement avec drupal_write_record() 344 2. L'utilisation de l'api 345 2.1 La gestion des nœuds 346 2.1.1 La création 346 2.1.2 Le chargement 348 2.1.3 La mise à jour 348 7/11
2.1.4 Une nouvelle révision 348 2.2 La gestion des utilisateurs 349 2.2.1 La création 349 2.2.2 Le chargement 351 2.2.3 La mise à jour 351 2.2.4 La suppression 351 2.3 La gestion des vocabulaires et des termes 352 2.3.1 La création 352 2.3.2 Le chargement 353 2.3.3 La mise à jour 353 2.3.4 La suppression 354 3. La modification des en-têtes 354 3.1 L'ajout de balises 355 3.2 L'ajout de feuilles de style 355 3.3 L'ajout de scripts JavaScript 357 4. L'API de chaînes de caractères 360 5. L'API des images 361 6. Le système de traduction 365 6.1 La traduction des chaînes avec Drupal 366 6.2 L'export et l'import des traductions avec POTX 369 7. Conclusion 372 Créer un thème 1. L'intérêt des thèmes 373 1.1 La composition d'un thème 373 1.2 La séparation des responsabilités 374 8/11
2. L'installation et la configuration d'un thème 376 3. La structure d'un thème 381 3.1 Le fichier.info 382 3.2 Le fichier template.php 390 4. Les différents moteurs de template 393 5. Les régions et les blocs 395 5.1 Les régions 395 5.2 Les blocs 397 6. Les templates 398 6.1 Le template de nœud 399 6.2 Le template de bloc 403 6.3 Le template de page 405 7. Les hooks de thème 409 7.1 Les fonctions de thème 409 7.2 Les fonctions de preprocessing 410 7.2.1 Le hook hook_preprocess_node() 410 7.2.2 Le hook hook_preprocess_block() 412 7.2.3 Le hook hook_preprocess_page() 412 7.2.4 Le hook hook_preprocess() 413 8. La configuration avancée 415 9. Le système de sous-thèmes 417 10. L'intégration d'un framework CSS : Less 419 10.1 L'intégration de Less dans Drupal 420 10.2 Les principales instructions 421 9/11
10.2.1 Les variables 422 10.2.2 Les mixins 422 10.2.3 L'encapsulation 425 10.2.4 Les fonctions et opérations 426 11. Conclusion 427 Les plus 1. Configurer un site Drupal en 10 minutes 429 1.1 Les modules à installer 429 1.2 La configuration du site 431 1.2.1 La langue française 431 1.2.2 Les informations du site 436 1.2.3 Le format de texte 438 1.2.4 Le module Menu d'administration 439 1.2.5 Le rôle "Webmaster" 441 1.2.6 Les droits d'accès 442 1.2.7 Les alias d'url 442 1.2.8 Le système de fichiers 444 1.2.9 Les paramètres de recherche 445 1.2.10 Les paramètres utilisateurs 446 1.2.11 Le paramétrage du thème 448 1.2.12 Le formulaire de contact 448 1.2.13 Le module WYSIWYG 450 1.2.14 Le fichier.htaccess 453 1.2.15 Le fichier settings.php 454 1.3 Une alternative : les distributions Acquia 455 1.4 La configuration du serveur 456 1.4.1 Le serveur web : Apache 456 1.4.2 PHP 457 1.4.3 Le serveur de bases de données : MySQL 459 2. Subversion 460 10/11
2.1 Le repository 460 2.2 L'environnement de développement et de production 461 3. La gestion du cache sous Drupal 462 4. La fourniture de services : XML-RPC 463 4.1 Le client 464 4.2 Le serveur 464 5. La FAQ des experts 467 6. Conclusion 473 Index 475 11/11