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. Les plugins
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

Les plugins

Introduction

Grâce à la Plugin API de Drupal, il est possible de créer des plugins qui ajoutent des fonctionnalités spécifiques à vos sites. Imaginez ces plugins comme des boîtes à outils spéciales. Chaque boîte contient une série d’outils conçus pour exécuter des tâches précises, telles que la gestion de blocs complexes, l’ajustement de champs de saisie, ou l’ajout d’éléments de menu dynamiques, et bien plus encore…

Vous avez d’ailleurs vu dans le chapitre Techniques avancées un plugin de type Queue Worker, essentiel pour gérer les tâches en file d’attente et permettant de traiter ces tâches de manière asynchrone afin d’optimiser les performances du site.

Les plugins sont organisés en catégories selon leur fonction. Par exemple, dans la catégorie Field, vous trouverez le répertoire FieldWidget qui contient des plugins destinés à personnaliser l’affichage des champs dans les formulaires des entités, comme les nodes, les users ou les entités personnalisées.

Dans ce chapitre, nous explorerons en détail comment développer trois types de plugins très répandus et utiles :

  • les blocs : pour enrichir les pages avec des contenus variés et interactifs ;

  • les éléments...

Bloc dynamique

Les blocs dans Drupal offrent une diversité d’applications, allant du simple affichage de texte et de liens à des intégrations plus complexes comme les formulaires ou les flux dynamiques.

Après avoir exploré les bases des blocs et des types de blocs dans le chapitre Structures Drupal, il est temps de se plonger dans la création de blocs dynamiques via les plugins, pour exploiter pleinement la flexibilité de Drupal.

Les plugins de type blocs vous permettent de coder des fonctionnalités spécifiques qui peuvent être intégrées à n’importe quelle région de votre site, bénéficiant ainsi d’une grande réutilisabilité et adaptabilité.

De plus, contrairement aux blocs de contenu, les plugins de type bloc sont entièrement exportables via la configuration de Drupal. Cela facilite grandement leur migration vers d’autres environnements.

1. Création d’un plugin de type bloc

Pour créer un nouveau plugin de type bloc de manière efficace et structurée, l’utilisation de la commande drush generate est fortement recommandée. Cette commande automatise la création de la structure nécessaire pour votre plugin de bloc, vous faisant gagner du temps et assurant la conformité avec les standards de développement de Drupal.

Voici la commande Drush à exécuter pour initier la création d’un plugin de bloc :

drush generate plugin:block 
# Alias 
drush generate block 

Lorsque vous exécutez cette commande, Drush vous pose une série de questions pour configurer correctement votre bloc.

images/15EI01.png

Voici un aperçu des questions qui vous seront posées :

  • Module machine name : il faut indiquer le nom du module qui hébergera le bloc. Par exemple, si vous tapez my_module, le bloc sera généré dans ce module. 

  • Block admin label : il faut définir un label administratif pour votre bloc, ce qui facilitera son identification dans l’interface d’administration. Vous l’appellerez ici Example.

  • Plugin ID : un identifiant unique est demandé pour votre plugin. Si vous laissez ce champ vide, il sera automatiquement généré à partir du nom du module et du label administratif, ce que vous ferez...

Élément de menu dynamique

Les éléments de menu structurent la navigation sur un site. Ils peuvent être statiques, menant à des pages ou des ressources fixes, ou dynamiques, adaptant leur comportement et leur affichage en fonction du contexte utilisateur ou d’autres facteurs spécifiques.

Par exemple, un élément de menu dynamique peut changer selon les conditions telles que l’état de connexion de l’utilisateur, ses rôles, ou même des paramètres spécifiques passés via l’URL.

Utiliser des éléments de menu dynamiques est particulièrement utile pour des sites ayant des exigences complexes de navigation ou des besoins spécifiques de présentation de contenu, tels que des portails personnalisés ou des dashboards utilisateurs.

Dans cette section, nous allons voir comment créer un élément de menu dynamique via la commande drush generate.

Pour illustrer cela, l’objectif sera d’afficher le nom de l’utilisateur connecté dans un lien de menu redirigeant vers la page du compte utilisateur. Si l’utilisateur n’est pas connecté, alors vous le redirigerez vers la page de connexion.

1. Création d’un élément de menu dynamique

Pour commencer, générez la structure de base de votre élément de menu en utilisant Drush :

drush generate plugin:menu-link 
# Alias 
drush generate menu-link 

Cette commande vous guidera à travers plusieurs étapes pour définir les propriétés de votre élément de menu, telles que l’ID du plugin, le titre du menu et le chemin de routage associé. Remplissez ces détails en fonction des besoins spécifiques de votre menu.

Dans votre cas, vous placerez le plugin dans le module my_module et définirez comme nom de classe AccountMenuLink.

images/15EI08.png

Lorsque vous ouvrez le nouveau fichier généré, vous constatez qu’il ne contient pas de définition de méthode par défaut. Cependant, il comprend un commentaire...

Type de champ

La flexibilité de Drupal en tant que système de gestion de contenu réside en grande partie dans sa capacité à s’adapter aux besoins spécifiques des utilisateurs et des développeurs.

Une des manières de personnaliser l’expérience Drupal est la création de nouveaux types de champs, particulièrement utile lorsque vous devez stocker et afficher des informations dans une structure qui n’existe pas nativement dans Drupal. Par exemple, un champ destiné à stocker des couleurs au format RGBA, une spécificité qui n’est pas directement disponible dans les types de champs standards de Drupal.

Il est souvent possible de trouver des modules communautaires qui répondent à des besoins spécifiques. Ces solutions doivent toujours être envisagées, car elles peuvent offrir une réponse rapide et efficace.

Vous trouverez un exemple ici : https://www.drupal.org/project/color_field

Toutefois, le développement d’un type de champ personnalisé offre une intégration plus poussée et une plus grande flexibilité, permettant un contrôle précis sur la manière dont les données sont stockées, validées et présentées.

Par ailleurs, le module Paragraphs de Drupal est fréquemment utilisé pour créer des collections de champs, agissant comme des mini-entités réutilisables qui peuvent être insérées dans les types de contenu. Ce module est extrêmement utile pour les contributions purement éditoriales, fournissant aux utilisateurs une manière flexible de construire des pages.

Pour en savoir plus, consultez le lien : https://www.drupal.org/project/paragraphs

Cependant, Paragraphs peut présenter des limites lorsque l’objectif est de stocker des informations de manière plus structurée, particulièrement si l’on souhaite éviter les références excessives à d’autres entités, comme dans le cas de la construction d’API où la simplicité des structures de données est primordiale.

Dans cette section, nous explorerons comment étendre les capacités de Drupal en développant trois plugins complémentaires :...