Blog

Introduction au développement de module sur Drupal 8

02.01.2014
parlez-vous-drupal_visu_09_cut

Drupal 8 introduit un changement majeur dans le développement des modules custom avec notamment l'ajout de Symfony.

Cet article porte sur la façon de créer un module sur Drupal 8 ainsi que les nouveaux concepts de routes et de classes de contrôleur menu.

 

1. Création du module

  • Pour commencer, comme sur Drupal 7, nous allons créer un répertoire que l'on nommera ici « hello » dans /modules à la racine.


On notera au passage que le core de Drupal 8 se trouve dans le répertoire « core ». On ne touchera donc jamais à ce répertoire.

On notera également que les dossiers dans lesquels nous pourrons ajouter des modules et des thèmes se trouvent maintenant à la racine soit /modules et /themes en remplacement de /sites/all/modules et /sites/all/themes sur Drupal 7.

  • Dans notre répertoire « hello », nous allons créer un fichier intitulé « hello.info.yml »
     

Contrairement à Drupal 7, le fichier d'informations du module n'est pas plus « mon_module.info » mais « mon_module.info.yml ».

En effet, Drupal 8 utilise le format YAML pour ses fichiers.

Pour le fichier info cela reste assez similaire à Drupal 7.

  • Dans notre fichier info, nous allons insérer le code suivant :
     

    name: Hello World!
    type: module
    description: 'Displays a Hello World page.'
    package: Example Modules
    version: VERSION
    core: 8.x

     

2. Création du fichier .module

Dans Drupal 8, la création du fichier .module ne change pas.

  • Nous allons donc créer un fichier nommé «  hello.module » et y insérer le code suivant :


 

Nous avons créer ici un hook_menu contenant un titre, une description et le nom de la route.
Dans ce hook_menu la route est constitué du nom_du_module.le_nom_de_la_route que l'on retrouvera dans le prochain fichier que nous allons créer.

3. Création du fichier route

  • Nous allons maintenant créer le fichier route que l'on nommera « hello.routing.yml » et on y insère le code suivant :
     
    hello.hello_world:
      path: '/hello_world'
      defaults:
        _content: '\Drupal\hello\Controller\HelloController::helloWorld'
      requirements:
        _permission: 'view hello world'

Ce fichier va permettre de définir le chemin du menu, les permissions ainsi que les classes et les méthodes utilisées par le contrôle

4. Création du contrôleur
 

  • Le dernier fichier à créer pour afficher notre Hello World est le contrôleur. Ce fichier sera placé dans le répertoire \lib\Drupal\hello\Controller\HelloController.php que l'on crée dans le répertoire du module. On le nomme « HelloController.php » et on y insère le code suivant :
     

    <?php
    /**
    * @file
    * Contains \Drupal\hello\Controller\HelloController.
    */ namespace Drupal\hello\Controller;

    use

    Drupal\Core\Controller\ControllerBase; /**
    * Controller routines for hello module routes.
    */
    class HelloController extends ControllerBase {

     

    /**
       * Return the 'Hello World' page.
       *
       * @return string
       *   A render array containing our 'Hello World' page content.
       */
      public function helloWorld() {
        $output = array();

       

    $output['hello'] = array(
          '#markup' => 'Hello World!',
        );

        return

    $output;
      }

    }

    ?>


     

Et voilà ! Avec ces 4 fichiers notre module est crée et permet en accédant à l'url /hello_world de voir apparaître notre fameux Hello World.

Un projet ? Parlons-en

En tant qu'agence web experte Drupal, nous sommes à votre écoute pour étudier vos besoins
et vous proposer les meilleures solutions.

Autres articles

Associer la flexibilité de Drupal à la puissance d'Amazon Web Services (AWS) est une stratégie adoptée par de nombreuses entreprises pour construire des plateformes web robustes et scalables. Cependant, naviguer dans l'écosystème AWS peut s'avérer complexe et coûteux si l'approche n'est pas maîtrisée. Cet article s'adresse aussi bien aux chefs de projet qu'aux développeurs et DevOps en quête d'une solution d'hébergement performante.

L'intégration de frameworks frontend comme React avec des systèmes de gestion de contenu (CMS) est une tendance croissante dans le développement web. Cet article vise à guider les développeurs à travers le processus d'intégration de React avec Drupal, en tirant parti des avantages de ces deux technologies.

Pendant des années, le module Rules a été la solution incontournable pour automatiser des tâches sur Drupal. Mais avec l'évolution de l'écosystème, ses limitations en termes de performance et d'expérience utilisateur sont devenues de plus en plus évidentes. Aujourd'hui, une véritable révolution est en marche : le module ECA (Event - Condition - Action).