gpt4 book ai didi

drupal-8 - 在 Drupal 8 中对特定节点类型使用预处理钩子(Hook)

转载 作者:行者123 更新时间:2023-12-01 08:23:47 25 4
gpt4 key购买 nike

我已经成功使用了预处理页面 Hook ,例如:

function mytheme_preprocess_page__node_front(&$variables) {
...
}


function mytheme_preprocess_page__node_12(&$variables) {
...
}

分别与名为 page--front.html.twig 和 page--12.html.twig 的自定义模板相关联。

我正在尝试为名为 Video 的内容类型实现相同的钩子(Hook)和模板配对。我知道不同之处在于我的示例是针对特定页面的自定义模板,而我的目标是针对整个内容类型的自定义模板,但是我得到了一个名为 node--video.html.twig 的自定义模板,它可以作为所有视频页面的模板。但是,当我尝试基于此模板名称编写 Hook 时:
function mytheme_preprocess_node__video(&$variables) {
...
}

这不起作用。我认为我要么无法定义这样的钩子(Hook),要么我只是错误地命名它。我发现了一些与此相关的线程,例如 this这似乎意味着我需要为所有节点定义一个钩子(Hook),然后编写一个 if 语句来分别处理每种类型。
所以.......

最后一个问题 :我可以为整个内容类型定义一个钩子(Hook)吗?如果可以,我做错了什么?

最佳答案

在预处理器中使用条件来获取节点类型,然后在其中执行您的逻辑,或者调用另一个函数。

function mytheme_preprocess_node(&$variables) {
switch ($variables['node']->getType()) {
case "video":
// ...
break;
case "something_else":
// ...
break;
}
}

理论上,您可以通过尝试调用名为 mytheme_preprocess_node__" . $variables['node']->getType() 的函数来模拟您尝试实现的目标。如果它存在,但没有明确的好处是大惊小怪。

关于drupal-8 - 在 Drupal 8 中对特定节点类型使用预处理钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43771500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com