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) :
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...