J'ai un module personnalisé où j'essaie d'utiliser des modèles personnalisés twig basés sur l'utilisateur mode d'affichage . Les fichiers de modèles que j'essaye d'ajouter à mon thème sont:
user.html.twig
user--compact.html.twig
user--token.html.twig
Ceux-ci résident dans un dossier appelé MYMODULE/templates/
.
Voici mon code de module actuel:
module_name.module:
/**
* Implements hook_theme().
*/
function MYMODULE_theme($existing, $type, $theme, $path) {
return [
'user' => [
'template' => 'user',
'base hook' => 'user',
],
'user__compact' => [
'template' => 'user--compact',
'base hook' => 'user',
],
'user__token' => [
'template' => 'user--token',
'base hook' => 'user',
],
];
}
hook_theme_suggestions_HOOK_alter()
est plus adapté pour modifier les suggestions existantes.
Dans ce cas, si vous ajoutez simplement une suggestion, sans modifier les préexistantes, vous pouvez utiliser le hook_theme_suggestions_HOOK .
/**
* Implements hook_theme_suggestions_HOOK().
*/
function MYMODULE_theme_suggestions_user(array $variables) {
return [
'user__' . $variables['elements']['#view_mode']
];
}
/**
* Implements hook_theme().
*/
function MYMODULE_theme($existing, $type, $theme, $path) {
return [
'user' => [
'template' => 'user',
'base hook' => 'user',
],
'user__compact' => [
'template' => 'user--compact',
'base hook' => 'user',
],
'user__token' => [
'template' => 'user--token',
'base hook' => 'user',
],
];
}
Le correctif garantissait l'ajout des suggestions de thèmes via HOOK_theme_suggestions_HOOK_alter()
, ainsi que le passage d'un modèle de user
à user__full
. Voici le code du module mis à jour:
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function MYMODULE_theme_suggestions_user_alter(&$suggestions, $variables) {
$view_mode = $variables['elements']['#view_mode'];
$suggestions[] = 'user__' . $view_mode;
}
/**
* Implements hook_theme().
*/
function MYMODULE_theme($existing, $type, $theme, $path) {
return [
'user__full' => [
'template' => 'user--full',
'base hook' => 'user',
],
'user__compact' => [
'template' => 'user--compact',
'base hook' => 'user',
],
'user__token' => [
'template' => 'user--token',
'base hook' => 'user',
],
];
}