カスタムモジュールを使用して、カスタムtwigに基づくテンプレートserview modeに基づいています。試行しているテンプレートファイル私のテーマに追加するには:
user.html.twig
user--compact.html.twig
user--token.html.twig
これらはMYMODULE/templates/
というフォルダにあります。
これは私の現在のモジュールコードです:
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()
は、既存の提案を変更するのに適しています。
この場合、既存の提案を変更せずに提案を追加するだけの場合は、 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',
],
];
}
修正により、テーマの提案が HOOK_theme_suggestions_HOOK_alter()
で追加され、テンプレートがuser
からuser__full
に切り替わりました。以下は更新されたモジュールコードです:
/**
* 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',
],
];
}