Drupal 8 - Suggestions des templates depuis un module

<?php
/*
 * Fichier latrach.module
 */

/* hook_theme()
 * on crée deux templates, par défaut, si le path n'est pas spécifier,
 * les deux fichiers de tamplates il faut les insérer dans le repertoire templates du module
 */

function latrach_theme($existing, $type, $theme, $path) {
  return [
   
'page_latrach' => [
     
'base hook' => 'page',
     
'variables' => ["params" => null],
     
'template' => 'page-latrach',
    ],
   
'html_latrach' => [
     
'base hook' => 'html',
     
'variables' => ["params" => null],
     
'template' => 'html-latrach',
    ]
  ];
}

/* hook_theme_suggestions_HOOK_alter()
 * si cette condition ma_condition est vrai, Drupal va proposer
 * la template html-latrach.html.twig
 * à la place de html.html.twig
 */

function latrach_theme_suggestions_html_alter(array &$suggestions, array $variables, $hook) {
  if (
ma_condition) {
   
$suggestions[] = 'html_latrach';
  }
}

/* hook_theme_suggestions_HOOK_alter
 * si cette condition ma_condition est vrai,
 * Drupal va proposer la template page-latrach.html.twig
 * à la place de page.html.twig
 */

function latrach_theme_suggestions_page_alter(array &$suggestions, array $variables, $hook) {
  if (
ma_condition) {
   
$suggestions[] = 'html_latrach';
  }
}

/* hook_preprocess_HOOK()
 * passage des variables à la template html-latrach.html.twig
 */

function latrach_preprocess_html_latrach(&$variables) {

 

$variables['params'] = [
   
"param1" => "la valeur 1 à passer à la template page-latrach.html.twig",
   
"param2" => "la valeur 2 à passer à la template page-latrach.html.twig",
  ];
}

/* hook_preprocess_HOOK()
 * passage des variables à la template page-latrach.html.twig
 */

function latrach_preprocess_page_latrach(&$variables) {

 

$variables['params'] = [
   
"param1" => "la valeur 1 à passer à la template html-latrach.html.twig",
   
"param2" => "la valeur 2 à passer à la template html-latrach.html.twig",
  ];
}
?>
/*
* Utlisation des variables dans les templates Twig:
*/
{{ params.param1  }}

Tags: 

Catégories: 

Share/Save