我有一个自定义模块,在Drupal9.3中,我试图覆盖注释字段的模板。
在我的模块文件中,我定义了hook_theme来覆盖正在使用的核心模板。(comment.html.twig),它可以工作,但不会触发comment.module中的comment_preprocess_field钩子,然后将注释变量分配给模板。
我的模块文件hook_theme是:
function MODULE_theme() {
return [
'field__field_FIELD_NAME' => [
'base_hook' => 'field',
]
];
}这是可行的,并且显示了我的自定义模板,但是它缺少了从comment_preprocess_field传递的注释变量。
如果我将模板放置在我的主题中,comment_preprocess_field钩子就会运行,变量将被添加到模板中,而不是当从自定义模块完成时。
有人知道如何在模块中重写注释字段模板时让钩子comment_preprocess_field运行吗?
发布于 2023-03-07 22:18:22
使用base hook,而不是base_hook (没有下划线):
function MODULE_theme() {
return [
'field__field_FIELD_NAME' => [
'base hook' => 'field',
]
];
}它应该像平常一样调用预处理。在进行更改后,您需要重新构建缓存。
https://drupal.stackexchange.com/questions/314987
复制相似问题