logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Création d'une page dans un module Drupal de manière programmatique

05/07/2025, by Ivan

Menu

Il y a deux étapes pour créer une page simple dans Drupal :

Déclarez le chemin et ses paramètres.

Cette étape inclut le titre de la page, les exigences d'accès à la page, etc.

Dans Drupal 7, vous deviez implémenter hook_menu().

Dans Drupal 8, créez un fichier <nom_module>.routing.yml dans le répertoire du module à la racine.

Écrivez le code pour retourner le contenu de la page.

Dans Drupal 7, vous deviez écrire une fonction callback de page, indiquée dans hook_menu().

Dans Drupal 8, le callback de la page doit être soit une méthode d'une classe, soit un service enregistré. Il peut différer selon diverses conditions (HTTP ou HTTPS, en-têtes de contenu, etc.), mais cela dépasse le cadre de cette introduction.

Parcours

En suivant l'exemple de cette page, vous pourrez créer une page simple dans votre module personnalisé sans apprendre davantage sur les internals de Drupal. Pour plus d'informations, consultez la note de changement concernant le système de routage et les différentes implémentations dans le core et les projets exemples.

Fichier YAML de routage pour le module exemple

Les informations de routage sont stockées dans example/example.routing.yml :

example.my_page:
  path: '/mypage/page'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::myPage'
    _title: 'Ma première page dans D8'
  requirements:
    _permission: 'access content'

example.my_page

  • C'est le nom machine de la route. Par convention, les noms machine des routes doivent être module_name.sous_nom. Quand d'autres parties du code doivent référencer la route, elles utilisent ce nom machine.

path

  • Il définit le chemin vers la page sur votre site. Notez le slash initial (/).

defaults

  • Il décrit le callback de la page et le titre. @todo : Où ces valeurs par défaut peuvent-elles être surchargées ?

requirements

  • Il définit les conditions sous lesquelles la page sera affichée. Vous pouvez spécifier des permissions, des modules qui doivent être activés, et d'autres conditions.

Implémentation de la page pour le module exemple

La classe Controller ExampleController doit être définie dans example/src/Controller/ExampleController.php :

<?php
namespace Drupal\example\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Fournit les réponses des routes pour le module Example.
 */
class ExampleController extends ControllerBase {

  /**
   * Retourne une page simple.
   *
   * @return array
   *   Un tableau rendu simple.
   */
  public function myPage() {
    $element = array(
      '#markup' => 'Bonjour, monde',
    );
    return $element;
  }

}

namespace

  • Ici, on déclare le préfixe nécessaire pour définir complètement le nom de la classe que nous définissons. Comparez le bloc de documentation et le nom de la classe. L'autoloader sait que pour trouver la classe \Drupal\example\Controller\ExampleController, il doit chercher le fichier modules/example/src/Controller/ExampleController.php.

use

  • Cela nous permet d'utiliser ControllerBase au lieu du nom complet. Cela rend la déclaration de classe beaucoup plus lisible.

myPage()

  • La méthode référencée dans le fichier YAML doit être publique. Elle doit retourner un tableau renderable.