(テーマではなく)カスタムモジュールにあるオーバーライドされたTwigテンプレートに変数を渡したいのですが。
this answer および this answer に続いて、このコードをmymodule.moduleに記述しました。
_function mymodule_preprocess_page(array &$variables) {
$variables['hello'] = 'world';
}
function mymodule_theme_suggestions_node_add_list(array $variables) {
$suggestions = [];
$suggestions[] = 'node_add_list__' . 'custom';
return $suggestions;
}
function mymodule_theme() {
return [
'node_add_list__custom' => [
'base hook' => 'node_add_list',
],
];
}
_
次に、mymodule/templates/node-add-list--custom.html.twigに追加しました:
_myvar: {{ hello }}
_
しかし、ページを更新しても、「myvar:」の後に何も表示されません。 キャッシュをクリアしたことをお伝えします。
hook_preprocess_page()
をhook_theme_suggestions_HOOK()
/hook_theme()
と一緒に使用する場合、管理するために特定のものはありますか?
function MYMODULE_preprocess_node_add_list
する必要があります。
function MYMODULE_preprocess_node_add_list(array &$variables) {
$variables['hello'] = 'world';
}
この前処理フックは、実際には HOOK_preprocess_HOOK
と呼ばれます。名前の最後のHOOK
を参照してください。 'base hook'
であるnode_add_list
をターゲットにする必要があります。したがって、ページの代わりに前処理を行います。