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

Prétraitement et modification des attributs dans le fichier .theme

05/07/2025, by Ivan

Comme dans Drupal 7, vous pouvez influencer la sortie d’un certain HTML grâce aux fonctions de prétraitement. Par exemple, si vous souhaitez ajouter une classe à un menu et préférez le faire au niveau PHP, vous pouvez le faire. C’est un bon moyen de modifier le balisage lié au thème, mais si vous voulez créer un balisage indépendant du thème, il vaut mieux écrire un module personnalisé.

(Remarque : pour les besoins de cette documentation, « mytheme » est le nom machine de votre thème ; par exemple, « bartik » est le nom machine du thème.)

Pour travailler avec les fonctions de prétraitement :

1. Créez ou modifiez un fichier dans le répertoire de votre thème appelé mytheme.theme

2. Créez une fonction telle que mytheme_preprocess_HOOK, où HOOK fait référence à l’élément que vous souhaitez influencer*

3. Écrivez vos modifications et sauvegardez

4. Reconstruisez le cache pour que vos modifications soient prises en compte (si vous avez drush installé, faites drush cr dans la ligne de commande)

* Les noms des HOOK suivent les conventions des templates Twig. Pour créer un hook pour page.html.twig, vous créez mytheme_preprocess_page. Pour créer un hook pour un nœud – article.html.twig, vous créez mytheme_preprocess_node__article (en remplaçant les traits d’union par des underscores). Pour trouver les noms des hooks, consultez la section « Recherche des fichiers de template avec le débogage ».

Supposons que vous vouliez ajouter la classe my-menu à tous les menus de votre site. En supposant que votre thème s’appelle « mytheme », vous devez écrire la fonction suivante :

/**
* Implémente hook_preprocess_HOOK() pour menu.html.twig.
*/
function mytheme_preprocess_menu(&$variables) {
  // S’il n’existe pas déjà un tableau de classes, en créer un vide.
  if (!isset($variables['attributes']['class'])) {
    $variables['attributes']['class'] = [];
  }
  // Fusionner avec toutes les classes qui pourraient avoir été ajoutées par d’autres appels hook_preprocess_menu
  $variables['attributes']['class'] = array_merge($variables['attributes']['class'], ['my-menu']);
}

C’est très similaire à Drupal 7 et c’est utile si vous souhaitez personnaliser un menu ciblé.

Vous pouvez vérifier l’objet $variables avec une condition pour déterminer sur quel menu vous travaillez. Les éléments à l’intérieur de $variables deviennent accessibles dans Twig après le prétraitement du thème.

Maintenant, pour étendre notre exemple, supposons que vous voulez ajouter la classe « my-main-menu » au menu principal de votre site. Voici la fonction pour cela :

/**
* Implémente hook_preprocess_HOOK() pour menu.html.twig.
*/
function mytheme_preprocess_menu(&$variables) {
  if ($variables['menu_name'] == 'main') {
    if (!isset($variables['attributes']['class'])) {
      $variables['attributes']['class'] = [];
    }
    $variables['attributes']['class'] = array_merge($variables['attributes']['class'], ['my-main-menu']);
  }
}

Différences avec Drupal 7

Il n’y a plus de fichier template.php. Ce fichier a été remplacé par mytheme.theme. Néanmoins, il fonctionne toujours de manière similaire, permettant aux hooks de modifier la sortie.

Autres liens utiles