• Aide
  • Eurêkoi Eurêkoi

Livre

Drupal 10 : le guide complet pour le développement de solutions web robustes

Résumé

Des conseils, des astuces et des exemples d'application qui illustrent les meilleures pratiques de développement web avec Drupal 10 : installation, configuration de modules personnalisés, gestion des types de contenus, création de views, manipulation des entités, configurations, internationalisation, formulaires, techniques avancées, optimisation des performances, tests, mise en production.


  • Éditeur(s)
  • Date
    • C 2024
  • Notes
    • La couv. porte en plus : "En téléchargement : code source" ; "Version en ligne offerte ! pendant 1 an" ; "Informatique technique"
    • La 4e de couv. indique : Sur www.editions-eni.fr : le code source des exemples du livre"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (609 p.) : ill. ; 21 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-04738-1
  • Indice
    • 681.511 Logiciels de développement de sites web
  • Quatrième de couverture
    • Drupal 10

      Le guide complet pour le développement de solutions web robustes

      Ce guide approfondi sur Drupal 10 est destiné aux développeurs, gestionnaires de contenu et administrateurs Drupal qui aspirent à acquérir des bases solides et des techniques avancées dans le développement de solutions web robustes et évolutives. Les lecteurs y trouveront de nombreux conseils pratiques, astuces et exemples d'application qui illustrent les meilleures pratiques de développement. Bien qu'axées sur Drupal 10, une grande majorité des notions abordées restent pertinentes pour les futures versions de Drupal.

      L'auteur commence par un aperçu historique de Drupal, de ses évolutions récentes et des avantages qui en font un choix privilégié pour les développeurs, comme sa modularité, sa sécurité et sa communauté active. Il compare Drupal à d'autres CMS populaires, comme WordPress et Joomlal, en soulignant ses atouts en termes de personnalisation et de flexibilité de design.

      Ensuite, le livre explore l'installation de l'environnement de développement, en passant par Docker et DDEV, avant de détailler l'installation de Drupal 10. Vous apprendrez à créer et à configurer des modules personnalisés, à gérer des types de contenus et à travailler avec des entités personnalisées. Le chapitre sur les structures Drupal explore la taxonomie, les blocs, les menus et les modes d'affichage, tandis que celui sur les utilisateurs et les permissions explique comment gérer les comptes et les rôles.

      Les Views, un outil puissant pour afficher du contenu, sont également couvertes avec des instructions sur leur création et leur gestion. L'auteur se penche ensuite sur la manipulation des entités, la gestion des configurations et l'internationalisation. Il met également un accent particulier sur les APIs de Drupal 10. Les formulaires ainsi que des techniques avancées comme la création de services personnalisés, les tâches planifiées et la gestion des événements sont aussi abordés.

      Pour finir, ce livre traite de l'optimisation des performances et de la gestion du cache, des tests et de la mise en production, offrant un véritable guide complet pour maîtriser Drupal dans divers contextes de développement web.


  • Tables des matières
      • Drupal 10

      • Le guide complet pour le développement de solutions web robustes

      • Avant-propos
      • 1. Public concerné et prérequis19
      • 2. Objectifs20
      • 3. Méthodologie20
      • 4. Conclusion21
      • Chapitre 1
      • Introduction à Drupal 10
      • 1. Historique et évolution23
      • 1.1 Évolution de Drupal23
      • 1.2 Nouveautés et améliorations25
      • 2. Avantages de Drupal25
      • 2.1 Liberté de création26
      • 2.2 Flexibilité et extensibilité27
      • 2.3 Robustesse et sécurité28
      • 2.4 Communauté active28
      • 2.5 Écosystème modulaire29
      • 3. Pourquoi choisir Drupal ?29
      • 3.1 Flexibilité et polyvalence29
      • 3.1.1 Gestion de contenu et plus29
      • 3.1.2 Enjeux multiples30
      • 3.1.3 Fonctionnalités personnalisées30
      • 3.2 Comparaison avec d'autres CMS30
      • 3.2.1 WordPress30
      • 3.2.2 Joomla !31
      • 3.2.3 Magento31
      • 3.2.4 PrestaShop31
      • 3.2.5 Wix31
      • 3.3 Thèmes et flexibilité de design32
      • 3.3.1 Flexibilité pour des designs personnalisés32
      • 3.3.2 Thèmes Drupal vs thèmes d'autres CMS32
      • 3.3.3 Adaptabilité aux besoins esthétiques32
      • 3.4 Cas d'utilisation courants33
      • 3.5 Cas où Drupal peut ne pas convenir33
      • 3.6 Conclusion34
      • Chapitre 2
      • Préparation de l'environnement
      • 1. Installation de l'environnement de développement35
      • 1.1 Prérequis système35
      • 1.1.1 Prérequis généraux35
      • 1.1.2 Prérequis par système d'exploitation36
      • 1.2 Installation de Docker36
      • 1.2.1 Installation de Docker avec WSL2 sous Windows37
      • 1.2.2 Installation de Docker sur macOS38
      • 1.2.3 Installation de Docker sur Linux39
      • 1.3 Surcouche Docker pour Drupal39
      • 1.3.1 DDEV (recommandé)40
      • 1.3.2 Lando40
      • 1.3.3 Docker4Drupal41
      • 1.3.4 Docksal41
      • 2. Installation de Drupal 1042
      • 2.1 Préparation de DDEV42
      • 2.1.1 Créez un répertoire pour votre projet42
      • 2.1.2 Configuration de DDEV43
      • 2.1.3 Démarrage de DDEV43
      • 2.2 Nouveau projet Drupal via Composer44
      • 2.3 Racine du projet et Docroot45
      • 2.3.1 La racine du projet45
      • 2.3.2 Le Docroot46
      • 2.4 Installation de Drush47
      • 2.5 Site simple et multisite48
      • 2.5.1 Site simple48
      • 2.5.2 Multisite49
      • 2.6 Paramètres de site Drupal50
      • 2.6.1 Le fichier sites/default/settings. php50
      • 2.6.2 Le fichier sites/example. settings. local. php51
      • 2.6.3 Cas particulier : settings. ddev. php51
      • 3. Répertoires spéciaux52
      • 3.1 Fichiers temporaires52
      • 3.2 Fichiers publics52
      • 3.3 Fichiers privés53
      • 3.4 Fichiers de configuration53
      • 4. Modules Drupal54
      • 4.1 Installer un module via Composer55
      • 4.2 Désinstaller un module Drupal56
      • 4.3 Appliquer un correctif via Composer57
      • 4.4 Mettre à jour un module58
      • 4.4.1 Afficher les mises à jour disponibles59
      • 4.4.2 Mettre à jour les modules59
      • 4.4.3 Appliquer les mises à jour de la base de données59
      • 4.4.4 Reconstruire le cache Drupal60
      • 4.4.5 Aller plus loin.60
      • Chapitre 3
      • Création de modules personnalisés
      • 1. Introduction61
      • 2. Structure d'un module Drupal62
      • 3. Création d'un module simple65
      • 3.1 Création de la structure65
      • 3.2 Fichier. info. yml65
      • 3.3 Fichier. module66
      • 3.4 Contrôleur67
      • 3.5 Fichier. routing67
      • 3.6 Reconstruire le cache68
      • 3.7 Activation du module69
      • 3.8 Vérification70
      • 4. Drush pour générer du code71
      • 5. Utilisation des hooks71
      • 5.1 Utiliser un hook existant72
      • 5.2 Créer ses propres hooks73
      • 5.2.1 Alter hooks74
      • 5.2.2 Hooks normaux75
      • 5.2.3 Alter hooks vs hooks normaux76
      • Chapitre 4
      • Types de contenu
      • 1. Introduction79
      • 1.1 Exemples courants80
      • 2. Gérer les types de contenu81
      • 2.1 Créer un type de contenu81
      • 2.2 Modifier un type de contenu83
      • 2.3 Supprimer un type de contenu84
      • 2.4 Paramétrer un type de contenu84
      • 2.4.1 Paramètres du formulaire de soumission85
      • 2.4.2 Options de publication86
      • 2.4.3 Paramètres d'affichage86
      • 2.4.4 Paramètres des menus87
      • 2.5 Autres sections88
      • 2.5.1 Gérer les champs (Manage fields)88
      • 2.5.2 Gérer l'affichage du formulaire (Manage form display)89
      • 2.5.3 Gérer l'affichage (Manage display)90
      • 2.5.4 Gérer les permissions (Manage permissions)90
      • 3. Les champs92
      • 3.1 Gestion des champs92
      • 3.1.1 Créer un champ92
      • 3.1.2 Paramétrer le champ94
      • 3.1.3 Finaliser le champ95
      • 3.1.4 Réutiliser un champ existant96
      • 3.2 Affichage du formulaire98
      • 3.2.1 Les widgets de champ99
      • 3.2.2 Tester le formulaire101
      • 3.3 Affichage du contenu103
      • 3.3.1 Les formatters de champ105
      • 3.3.2 Tester l'affichage106
      • 3.3.3 Accéder à la liste des contenus109
      • Chapitre 5
      • Entités personnalisées
      • 1. Introduction111
      • 1.1 Cas d'utilisation112
      • 1.1.1 Suivi d'événements dans un calendrier112
      • 1.1.2 Gestion de produits dans un site e-commerce112
      • 1.1.3 Suivi des performances des employés113
      • 1.2 En résumé114
      • 2. Entités simples et bundleables115
      • 2.1 Entité simple115
      • 2.2 Entité bundleable115
      • 2.3 Génération d'entités avec Drush116
      • 3. Générer une entité simple117
      • 3.1 Fichiers impactés120
      • 3.2 Personnalisation des champs125
      • 4. Générer une entité bundleable130
      • 4.1 Fichiers impactés et adaptations132
      • 4.2 Personnalisation des champs134
      • 4.3 Champs de base (Base Fields)136
      • 4.3.1 Avantages et inconvénients136
      • 4.3.2 Cas d'utilisation137
      • Chapitre 6
      • Structures Drupal
      • 1. Introduction145
      • 1.1 Concept de structure dans Drupal145
      • 1.2 Types de contenu et entités personnalisées146
      • 2. La taxonomie146
      • 2.1 Création et gestion des vocabulaires147
      • 2.1.1 Créer des vocabulaires147
      • 2.1.2 Gérer les termes148
      • 2.1.3 Ajouter des champs à un vocabulaire150
      • 2.2 Champ de référence à des termes de taxonomie151
      • 2.3 Bonnes pratiques155
      • 3. Les blocs156
      • 3.1 Types de blocs et blocs de contenu157
      • 3.1.1 Gérer les types de blocs157
      • 3.1.2 Gérer les blocs de contenus159
      • 3.2 Placement des blocs161
      • 3.3 Bonnes pratiques166
      • 4. Les menus168
      • 4.1 Création et gestion des menus169
      • 4.2 Liens de menu171
      • 4.2.1 Ajouter un lien de menu171
      • 4.2.2 Modifier un lien de menu173
      • 4.2.3 Supprimer un lien de menu173
      • 4.3 Attribution de menus à des régions174
      • 4.4 Bonnes pratiques176
      • 5. Les Display Modes178
      • 5.1 View Modes pour l'affichage de contenu178
      • 5.1.1 Personnaliser un View Mode179
      • 5.1.2 Afficher une entité dans un View Mode182
      • 5.1.3 Créer un View Mode personnalisé185
      • 5.1.4 Bonnes pratiques188
      • 5.2 Form Modes pour l'affichage de formulaire188
      • 5.2.1 Créer un Form Mode personnalisé189
      • 5.2.2 Afficher un Form Mode personnalisé192
      • Chapitre 7
      • Utilisateurs et permissions
      • 1. Introduction197
      • 2. Gérer les comptes utilisateurs198
      • 2.1 Créer un compte utilisateur198
      • 2.1.1 Création manuelle198
      • 2.1.2 Inscription par l'utilisateur200
      • 2.2 Administrer les comptes utilisateurs203
      • 2.2.1 Annulation de compte utilisateur204
      • 2.3 Personnaliser les comptes utilisateurs206
      • 2.3.1 Ajout de champs personnalisés206
      • 2.3.2 Affichage et gestion des champs207
      • 3. Rôles et permissions208
      • 3.1 Définition des rôles209
      • 3.2 Attribution des permissions211
      • 3.2.1 Bonnes pratiques213
      • 4. Permissions personnalisées214
      • 4.1 Permissions simples214
      • 4.1.1 Création d'une permission simple214
      • 4.1.2 Utilisation dans le code216
      • 4.1.3 Utilisation dans le fichier de routing217
      • 4.2 Permissions d'entités personnalisées218
      • 4.2.1 Déclaration des permissions219
      • 4.2.2 Création de la classe ProjectAccessControlHandler220
      • 4.2.3 Référencement de la classe dans l'entité Project223
      • 4.2.4 Vérification du fonctionnement224
      • 4.3 Permissions dynamiques225
      • 4.3.1 Génération des permissions226
      • 4.3.2 Déclarer la classe générant des permissions228
      • 4.3.3 Définir la logique d'accès228
      • 4.3.4 Vérification du fonctionnement230
      • Chapitre 8
      • Views
      • 1. Introduction233
      • 1.1 Qu'est-ce qu'une View ?233
      • 1.2 Vue d'ensemble235
      • 1.2.1 Les composants235
      • 1.2.2 Réglages du display237
      • 1.2.3 Réglages de base et avancés238
      • 2. Administration des Views242
      • 3. Gestion des composants248
      • 3.1 Définir le format248
      • 3.2 Gérer les champs249
      • 3.3 Critères de filtrage260
      • 3.3.1 Critère de filtrage simple261
      • 3.3.2 Critère de filtrage exposé263
      • 3.4 Critères de tri267
      • 3.4.1 Critère de tri simple269
      • 3.4.2 Critère de tri exposé270
      • 4. Réglages de base272
      • 4.1 Header et Footer272
      • 4.2 Absence de résultats275
      • 4.3 Pagination277
      • 5. Réglages avancés280
      • 5.1 Les relations281
      • 5.2 Filtres contextuels285
      • 5.3 Options du formulaire exposé289
      • 5.4 Autres réglages290
      • 6. Gestion de différents displays292
      • 7. Intégration des Views dans le code301
      • Chapitre 9
      • Manipuler les entités
      • 1. Introduction305
      • 2. Chargement des entités307
      • 2.1 Entity::load vs EntityTypeManageru::load308
      • 2.2 Valeurs de champs309
      • 2.2.1 Champ à valeur unique309
      • 2.2.2 Champ à valeur multiple310
      • 2.3 Tester les entités312
      • 3. Opérations sur les entités313
      • 3.1 Création d'entités313
      • 3.2 Modification d'entités314
      • 3.3 Suppression d'une entité316
      • 4. Requêtes avec EntityQuery316
      • 4.1 Requêtes simples317
      • 4.1.1. Déclaration du type d'entité317
      • 4.1.2 Filtrer en utilisant les conditions318
      • 4.1.3 Pagination et tri319
      • 4.1.4 Exécution de la requête320
      • 4.1.5 Compter les résultats321
      • 4.2 Requêtes avancées321
      • 4.2.1 Propriétés de champs321
      • 4.2.2 Champs d'entités référencés322
      • 4.2.3 Conditions OR322
      • 4.2.4 Groupe de conditions (OR et AND)323
      • 5. Affichage des entités323
      • 5.1 Préparation du contrôleur324
      • 5.2 Renderable Array327
      • 5.3 Affichage d'un champ329
      • 5.4 Affichage d'un View Mode d'entité331
      • Chapitre 10
      • Les configurations
      • 1. Introduction335
      • 1.1 Contenus et configurations335
      • 1.2 Gestion et stockage336
      • 2. Exporter des configurations340
      • 3. Importer des configurations342
      • 4. Ignorer des configurations343
      • 5. Les états (states)344
      • 5.1 Mise en maintenance du site345
      • 5.2 Autre cas d'utilisation347
      • Chapitre 11
      • Langues et localisation
      • 1. Introduction349
      • 1.1 Gérer les langues351
      • .2 Ajout de nouvelles langues352
      • 1.3 Détection et sélection353
      • 1.4 Changement de langue355
      • 2. Traduire l'interface358
      • 2.1 Administrer la traduction d'interface361
      • 2.2 Rendre traduisibles des chaînes de caractères363
      • 2.2.1 En PHP363
      • 2.2.2 En Twig366
      • 2.2.3 En JavaScript367
      • 2.2.4 Contexte de traduction368
      • 2.3 Exporter et importer des traductions371
      • 2.3.1 Exporter des traductions371
      • 2.3.2 Importer des traductions374
      • 3. Traduire les contenus376
      • 3.1 Activer la traduction des contenus377
      • 3.2 Ajouter des traductions aux contenus381
      • 3.3 Views et contenus traduits383
      • 3.3.1 Affichage exclusif des contenus traduits385
      • 3.3.2 Affichage de la traduction avec repli sur l'original387
      • 4. Traduire les configurations390
      • 4.1 Traduire la configuration d'entités392
      • 4.2 Traduire la configuration des champs394
      • 4.3 Traduire les configurations spécifiques396
      • 4.4 Exporter les traductions de configuration399
      • Chapitre 12
      • Les formulaires
      • 1. Introduction401
      • 2. Formulaire personnalisé402
      • 2.1 Les variables $form et $form_state406
      • 2.2 Form API et documentation409
      • 2.3 Les éléments de formulaire410
      • 2.3.1 Textfield410
      • 2.3.2 Textarea411
      • 2.3.3 Select411
      • 2.3.4 Checkbox412
      • 2.3.5 Radios et Checkboxes413
      • 2.4 Les éléments spéciaux414
      • 2.4.1 markup414
      • 2.4.2 container415
      • 2.4.3 submit416
      • 2.4.4 button418
      • 2.4.5 actions418
      • 2.5 Validation419
      • 2.5.1 Type de champ et attributs419
      • 2.5.2 Champ obligatoire420
      • 2.5.3 Validation par élément421
      • 2.5.4 Validation du formulaire422
      • 2.6 Soumission424
      • 2.7 Les states426
      • 2.8 AJAX427
      • 2.8.1 Utilisation simple428
      • 2.8.2 Utilisation des AJAX Callback Commands429
      • 3. Formulaire de configuration431
      • 3.1 Générer le formulaire de configuration431
      • 3.2 Sauvegarde et configuration par défaut437
      • 3.3 Lire et manipuler une configuration438
      • 3.3.1 Lire la configuration438
      • 3.3.2 Modifier la configuration439
      • 3.3.3 Supprimer la configuration439
      • Chapitre 13
      • Techniques avancées
      • 1. Introduction441
      • 2. Librairies personnalisées442
      • 2.1 Créer et déclarer une librairie442
      • 2.1.1 Importance de Once JS avec BigPipe444
      • 2.1.2 Fichiers JavaScript et CSS444
      • 2.2 Injecter une librairie446
      • 2.3 Utiliser les drupalSettings446
      • 3. Services447
      • 3.1 Créer des services personnalisés447
      • 3.2 Utiliser les services personnalisés450
      • 3.3 Optimiser l'appel des services451
      • 4. Tâches planifiées et traitement par lots452
      • 4.1 Tâches CRON452
      • 4.1.1 Déclencher les tâches CRON453
      • 4.1.2 Administrer les tâches CRON456
      • 4.1.3 Créer une tâche CRON personnalisée457
      • 4.2 Queue Worker459
      • 4.2.1 Créer un Queue Worker459
      • 4.2.2 Ajouter des éléments à une queue462
      • 4.3 Opérations Batch463
      • 4.3.1 Préparation du Batch465
      • 4.3.2 Ajout d'opérations466
      • 4.3.3 Finalisation et exécution du batch467
      • 4.3.4 Fonctions de rappels467
      • 4.3.5 Fonction de finalisation469
      • 4.3.6 Résultat et visualisation470
      • 5. Événements et abonnés d'événements472
      • 5.1 S'abonner à un événement472
      • 5.2 Événements personnalisés476
      • 5.3 Déclencher les événements477
      • Chapitre 14
      • Performance et cache
      • 1. Introduction479
      • 2. Compression et Cache Navigateur480
      • 2.1 Activer les compressions480
      • 2.2 Browser Caching481
      • 2.2.1 Apache et. htaccess482
      • 2.2.2 Cache-Control max-age483
      • 2.3 Vider le cache484
      • 3. Gérer le cache Drupal485
      • 3.1 Modules de cache486
      • 3.1.1 Internai Page Cache486
      • 3.1.2 Internai Dynamic Page Cache486
      • 3.2 Cache Tags488
      • 3.2.1 Les différents types de Cache Tags489
      • 3.2.2 Invalidation du cache basé sur les tags491
      • 3.2.3 Ajout de Cache Tags492
      • 3.3 Cache Context494
      • 3.3.1 Assignation de Cache Contexts495
      • 3.3.2 Cumul des Cache Contexts496
      • 3.4 Cache max-age497
      • 3.5 Cache API498
      • 3.5.1 Écrire dans le cache498
      • 3.5.2 Récupérer un élément en cache498
      • 3.5.3 Invalider ou supprimer le cache499
      • 3.5.4 Utiliser des Cache Tags499
      • 4. Les styles d'image500
      • 4.1 Créer un style d'image500
      • 4.2 Utiliser un style d'image504
      • 4.2.1 Depuis un champ Image504
      • 4.2.2 Depuis le code507
      • 4.3 Bonnes pratiques509
      • 4.4 Aller plus loin510
      • Chapitre 15
      • Les plugins
      • 1. Introduction513
      • 2. Bloc dynamique514
      • 2.1 Création d'un plugin de type bloc515
      • 2.2 Utilisations avancées518
      • 2.2.1 Afficher les articles adjacents518
      • 2.2.2 Afficher un formulaire523
      • 3. Élément de menu dynamique525
      • 3.1 Création d'un élément de menu dynamique526
      • 3.2 Configuration de l'élément de menu528
      • 3.3 Intégration dans un menu spécifique529
      • 3.4 Test de l'affichage530
      • 4. Type de champ531
      • 4.1 Field Type533
      • 4.2 Field Widget542
      • 4.3 Field Formatter547
      • 4.4 Test et vérification551
      • Chapitre 16
      • Thème personnalisé
      • 1. Introduction557
      • 1.1 Pourquoi utiliser un thème existant ?557
      • 1.2 Quelques thèmes notables559
      • 2. Gérer les thèmes560
      • 2.1 Installer et activer un thème560
      • 2.2 Créer un sous-thème564
      • 3. Structure d'un thème569
      • 3.1 Déclaration (info. yml)569
      • 3.2 Fichier. theme572
      • 3.3 Libraries573
      • 3.3.1 SCSS et CSS573
      • 3.3.2 JavaScript574
      • 3.3.3 Multiple libraries576
      • 3.4 Breakpoints577
      • 4. Personnaliser le thème578
      • 4.1 Activer le mode debug578
      • 4.2 Surcharger un template580
      • 4.2.1 Suggestions de template581
      • 4.2.2 Identifier le template à surcharger584
      • 4.2.3 Créer le fichier de template584
      • 4.2.4 Enregistrer et tester586
      • 4.2.5 Gérer les variables587
      • 4.3 Gérer les régions592
      • 4.3.1 Créer une région593
      • 4.3.2 Placer des blocs dans la nouvelle région595
      • 4.3.3 Finaliser l'apparence595
      • Index599

  • Origine de la notice:
    • Electre
  • Disponible - A partir du 25 août 2025 - 681.511 BED