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

Ajout d’un template de thématisation dans un module Drupal

05/07/2025, by Ivan

Menu

Partie III de le guide pratique pour créer des modules de base Drupal 8
De .info aux tests, uniquement les bases

loremipsum.module

/**
 * Implémente hook_theme().
 */
function loremipsum_theme($existing, $type, $theme, $path) {
  $variables = array(
    'loremipsum' => array(
      'variables' => array(
        'source_text' => NULL,
      ),
      'template' => 'loremipsum',
    ),
  );
  return $variables;
}

Une autre raison de ne pas abandonner le fichier .module est que c’est là que se trouve le hook_theme(). Cela fonctionne presque comme dans D7 : vous déclarez un tableau contenant vos variables et le fichier template, qui doit être placé au bon endroit (dossier des templates) avec l’extension .html.twig.

Puis, avant de passer le tableau de rendu à Twig, vous pouvez effectuer un prétraitement. Le hook suivant insère une ponctuation aléatoire à la fin de chaque phrase :

/**
 * Fonction de prétraitement du template pour Lorem ipsum.
 *
 * @param array $variables
 *   Un tableau associatif contenant :
 *   - source_text
 */
function template_preprocess_loremipsum(&$variables) {
  $punctuation = array('. ', '! ', '? ', '... ', ': ', '; ');
  for ($i = 0; $i < count($variables['source_text']); $i++) {
    $big_text = explode('. ', $variables['source_text'][$i]);
    for ($j = 0; $j < count($big_text) - 1; $j++) {
      $big_text[$j] .= $punctuation[floor(mt_rand(0, count($punctuation) - 1))];
    }
    $variables['source_text'][$i] = implode('', $big_text);
  }
}

/templates/loremipsum.html.twig

{#
/**
 * @file
 * Implémentation par défaut du thème pour afficher du texte Lorem ipsum.
 *
 * Variables disponibles :
 *   - source_text
 *
 * @see template_preprocess_loremipsum()
 *
 * @ingroup themeable
 */
#}
<div class="loremipsum">
{% for item in source_text %}
  <p>{{ item }}</p>
{% endfor %}
</div>

Maintenant, le tableau $source_text est traité avec une simple boucle for dans notre template, entouré par des balises <p>.

Notez la correspondance entre hook_theme(), template_preprocess_hook() et notre fichier Twig :

06_0

07_0

08_0