Comment créer un module avec Drupal 8 ?

Berna Akyildiz   mer 29/04/2020 - 19:26  59 vues

Créer un module avec Drupal 8

Dans cet article nous allons en découvrir un peu plus sur Drupal 8 et son système modulaire. Nous allons notamment comprendre ce qu’apportent réellement les modules et les blocs et comment créer son premier module personnalisé avec Drupal 8.  

Commençons par une petite piqûre de rappel sur le vocabulaire de base de Drupal afin de faciliter la compréhension de l’article.

  • Qu’est ce qu’un module ? : C’est un ensemble de fichiers PHP, Javascript et/ou CSS qui étendent les fonctionnalités du site et en ajoutent de nouvelles.
  • Qu’est ce qu’un bloc ? : Les blocs sont des parties de la mise en page de votre site web indépendantes les unes des autres et peuvent être créées, supprimées et ordonnées à volonté par l’utilisateur via la page d’administration. Pour commencer la création d’un module personnalisé nous devons d’abord réaliser une première étape : La création d’un plugin de blocs (utilisant les annotations).
  • Qu’est ce qu’un plugin ? : Les plugins sont les différentes fonctionnalités d’un module pouvant être interchangeables. Ici nous allons utiliser des annotations pour créer un plugin.  
  • Pourquoi les annotations ? : Les annotations sont utilisées dans les classes où les fonctionnalités des blocs sont écrites. Les annotations commençant par “@Block” sont appelées “bloc plugin”. Ce @Block contient le metadata de la description du plugin. 

Voici un exemple d’annotation :

* @Block(
* id = "article_block",
* admin_label = @Translation("Article block"),
* category = @Translation("Custom article block example")
* )

id : nom de machine_id
admin_label : Nom des blocs
category : description du plugin

Remarque : Pour la création de modules, nos fichiers et dossiers doivent être à la racine (modules/custom).

Etape 1 : Création du fichier d’information et installation du module

Cette première étape est courte mais très importante, ici nous allons créer les fichiers de description du module. 
Commençons par la création d’un dossier “first_block “ dans “modules/custom”. Puis dans le dossier “first_block” nous devons créer le fichier “first_block.info.yml” qui va contenir la description de notre module.

Remarque : les noms des fichiers doivent avoir le bon format, tel que “first_block.info.yml”.

name: Premier bloc
description: Création le module simple
core: 8.x
package: Custom
type: module

name : Nom de module
description: Description du module
package : Nom de package
type : Type de package

Installation/desinstallation du module

Pour installer/desinstaller vos modules il existe deux manières différentes : 

  • Depuis le terminal avec drupal console :

Installation : drupal module:install first_block
Désinstallation : drupal module:uninstall first_block;

  • Gestion manuelle depuis le backoffice du site : 

Installation : Gérer -> Extension -> chercher votre module -> Installer
Désinstallation : Gérer -> Extension -> Désinstaller -> Chercher votre module -> Désinstaller

Remarque : toutes commandes Drupal peuvent être écrites en abrégé, exemple avec module:install = moi ou module:uninstall = mou.

Plugin

 

Etape 2 : Ajout de la fonctionnalité date et heure

Dans cette partie nous allons voir comment rendre notre module fonctionnel afin qu’il affiche la date et l’heure du jour. Premièrement, il faut créer le fichier “FirstBlock.php” dans first_block/src/Plugin/Block. puis créer la classe FirstBlock dans FirstBlock.php, cette classe élargie l’abstract générique de la classe “BlockBase”. BlockBase est une class qui fournit le formulaire de configuration, le paramétrage de blocs, et égalament la gestion des paramètres de visibilité des blocs définis par l'utilisateur. Ensuite passons à la création de la fonction “build” de la class “FirstBlock”.

Cette fonction retourne l’array suivant :

public function build() {
   return array(
     '#markup' => strftime('%Y-%m-%d %H:%M')
   );
 }

Ce qui correspond à l’affichage de la date dans un format personnalisé.

Voici le code final pour la class FirstBlock.php

<?php
namespace Drupal\first_block\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* Provides a 'firstBlock' block.
*
* @Block(
*  id = "first_block",
*  admin_label = @Translation("Premier bloc"),
* )
*/
class FirstBlock extends BlockBase{
 public function build() {
   return array(
'#markup' => strftime('%Y-%m-%d %H:%M')
   );
 }
}
?>

Etape 3 : Affichage du bloc

Dans cette troisième partie nous allons afficher notre module sur la page web.
Tout d’abord il faut nettoyer le cache avec la commande “drupal cr” et réouvrir votre projet dans votre navigateur.
Maintenant vous pouvez installer votre plugin dans Structure -> Mise en page des blocs-> sélectionnez votre bloc région et cherchez “Premier bloc” (le nom de votre plugin) et ajouter le plugin dans la région.

Plugin

Après avoir cliqué sur “retour au site” vous pouvez voir le nouveau bloc avec comme contenu la date et l’heure du jour dans la région que vous avez sélectionné.

Test Drupal

Félicitations vous avez créé votre premier module sous Drupal 8, nous arrivons à la fin de cet article ayant pour but de vous faire découvrir un peu plus en précision l’univers de Drupal et de ses fonctionnalités extrêmement variés. Il est important de comprendre que Drupal est un système de gestion paramétrable vous permettant une création réellement libre de votre site internet. Nous espérons que cela vous a aidé sur le développement de votre site internet Drupal 8 et qu’il a répondu à toutes vos interrogations.

 

Si vous cherchez d’autres explications sur le monde de Drupal, nous vous invitons à consulter nos différents billets de blog

N’hésitez pas à nous faire part de vos retours ou vos questions via notre formulaire de contact.

Inclure dans drupal.fr

À propos Berna

Depuis son arrivée dans l’équipe en 2019, elle s’occupe de toute la communication de l’agence ainsi que celle des clients.
Elle maitrise sur le bout des doigts les réseaux sociaux.
Heureusement qu’elle est là pour nous apporter une touche de féminité dans cette équipe de geek !!!

Son dynamisme et sa ponctualité

Le chocolat

Articles liés

Ajouter un commentaire

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.