Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. Drupal 10
  3. Création de modules personnalisés
Extrait - Drupal 10 Le guide complet pour le développement de solutions web robustes
Extraits du livre
Drupal 10 Le guide complet pour le développement de solutions web robustes Revenir à la page d'achat du livre

Création de modules personnalisés

Introduction

Les modules personnalisés jouent un rôle essentiel dans l’extension et la personnalisation des fonctionnalités de Drupal 10. Dans ce chapitre, nous explorerons les composants fondamentaux d’un module Drupal, et nous apprendrons comment créer des modules simples pour étendre les capacités de l’application.

Structure d’un module Drupal

Un module Drupal est composé de plusieurs fichiers clés qui définissent son fonctionnement et son comportement. Voici les principaux composants d’un module, illustrés ici à travers l’exemple du module fictif my_module (à noter que ce module n’est pas présent par défaut et est utilisé ici uniquement à titre d’exemple) :

images/03EI07.png

Fichier my_module.info.yml

Le fichier my_module.info.yml est un fichier de configuration qui définit les métadonnées du module. Ces métadonnées sont essentielles pour l’intégration du module dans l’écosystème de Drupal. Dans cet exemple, « my_module » est le nom machine du module et doit être utilisé comme préfixe pour être détecté par Drupal. Voici quelques métadonnées couramment utilisées :

  • name : le nom du module ;

  • type : le type du module, qui est généralement défini comme « module » ;

  • description : une brève description du module et de ses fonctionnalités ;

  • core_version_requirement : la version de Drupal requise pour que le module fonctionne ;

  • package : le regroupement du module, utile pour organiser les modules dans l’interface d’administration ;

  • dependencies : les dépendances...

Création d’un module simple

Créer un module personnalisé dans Drupal peut sembler complexe, mais nous allons suivre un exemple pas à pas pour vous guider à travers le processus.

Imaginons que vous vouliez créer un module qui affiche un message de bienvenue sur une page personnalisée.

1. Création de la structure

 Pour commencer, créez un répertoire nommé my_module dans le dossier web/modules/custom de votre installation Drupal. Ce nom est utilisé ici à titre d’exemple ; vous devrez le remplacer par le nom machine de votre propre module. À l’intérieur de ce répertoire, vous allez créer les fichiers nécessaires.

my_module/  
|-- my_module.info.yml  
|-- my_module.module  
|-- my_module.routing.yml 

2. Fichier .info.yml

Le fichier .info.yml définit les métadonnées de base de votre module. Dans cet exemple, vous nommerez votre module « My module » et spécifierez qu’il doit être compatible avec Drupal 10.

name: 'My module'  
type: module  
description: 'Define specific features for training.'  
package: Custom  
core_version_requirement: ^10 

3. Fichier .module

Le fichier .module est l’endroit où vous pouvez ajouter du code PHP pour étendre les fonctionnalités de votre module. Il peut contenir...

Drush pour générer du code

Pour simplifier la création de certaines parties de votre module, Drupal propose une commande Drush pratique appelée generate. Elle permet de générer automatiquement du code pour les modules, les thèmes et bien plus encore.

 Pour générer un module simple à l’aide de Drush, exécutez la commande suivante :

drush generate module 

 Pour générer un contrôleur à l’aide de Drush, exécutez la commande suivante :

drush generate controller 

Drush vous guidera à travers le processus de création du module et du contrôleur en vous posant des questions sur son nom, son emplacement et ses fonctionnalités. Cela peut être un excellent moyen de gagner du temps lors du développement.

De façon plus générale en tapant dans la console drush generate, vous aurez accès à la liste des différentes options regroupées par composants proposant une génération de code.

Utilisation des hooks

Drupal offre une architecture basée sur les hooks qui permet aux modules de réagir à des événements spécifiques et de personnaliser le comportement du système. Les hooks sont des fonctions PHP définies par les modules, et Drupal les appelle automatiquement lorsqu’un événement donné se produit.

Grâce à cette approche, vous pouvez étendre et personnaliser le comportement de Drupal sans avoir à modifier le cœur du système. Ils vous permettent d’intercepter des actions et de fournir des réponses personnalisées.

L’utilisation de hooks est une pratique courante dans le développement de modules Drupal. Chaque fois que vous souhaitez réagir à un événement ou modifier un aspect du fonctionnement de Drupal, vous pouvez créer vos propres hooks dans votre module afin de donner la possibilité à d’autres modules d’intercepter votre fonctionnalité et d’y insérer la leur.

1. Utiliser un hook existant

Supposons que vous souhaitez afficher un message de bienvenue personnalisé pour les utilisateurs connectés sur la page d’accueil en modifiant la balise title située dans le head.

Pour ce faire, vous pouvez créer un hook dans votre module personnalisé qui intercepte le chargement des informations rattachées à la page d’accueil.

/**  
 * Implements hook_page_attachments_alter().  
 */  
function my_module_page_attachments_alter(array &$attachments) {  
  if (\Drupal::currentUser()->isAuthenticated()  
    && \Drupal::service('path.matcher')->isFrontPage()) {  
    $attachments['#attached']['html_head'][] = [  
      [  
        '#tag' => 'title',  
        '#value' => t(  
          'Welcome @username...