Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.
Voici comment ajouter des suggestions de template à un type d'entité personnalisé en fonction du mode d'affichage (view_mode).
Ici mon module s’appelle « mon_module » et mon type d'entité personnalisé « resource » :
function monmodule_theme_suggestions_resource(array $variables) {
$suggestions = [];
$sanitized_view_mode = str_replace('.', '_', $variables['elements']['#view_mode']);
$suggestions[] = $variables['theme_hook_original'] . '__' . $sanitized_view_mode;
return $suggestions;
}Ci dessous la syntaxe orientée objet utilisable à partir de drupal 11.1, voir même avant, cf : https://kgaut.net/blog/2024/drupal-11-utiliser-la-nouvelle-syntaxe-orie….
<?php
#mon_module/src/Hook/ThemeHooks.php
namespace Drupal\mon_module\Hook;
use Drupal\Core\Hook\Attribute\Hook;
/**
* Provides hook implementations for Minisite ANCT Territoires d'industrie.
*/
class ThemeHooks {
/**
* Provides theme suggestions for entities Site cle en main.
*
* @param array $variables
* An associative array of variables about renderable elements.
*
* @return array
* An array of theme suggestion strings based on the processed view mode.
*/
#[Hook('theme_suggestions_ressource')]
public static function themmeSuggestionsRessource(array $variables) {
$suggestions = [];
$sanitized_view_mode = str_replace('.', '_', $variables['elements']['#view_mode']);
$suggestions[] = $variables['theme_hook_original'] . '__' . $sanitized_view_mode;
return $suggestions;
}
}
Ainsi, si j'ai un mode d'affichage « teaser » je pourrais utiliser un template resource--teaser.html.twig à la place de celui par défaut : resource.html.twig
Vous pouvez évidement ajouter autant de suggestions de template que nécessaire, en fonction d'autres paramètres.
Commentaires (0)