在 Drupal 8 中的特定节点类型上使用预处理钩子

2023-12-22

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

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

and

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

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

我正在尝试为名为“视频”的内容类型实现相同的挂钩和模板配对。我知道有一个区别,我的示例是针对特定页面的自定义模板,而我的目标是针对整个内容类型的自定义模板,但我有一个名为 node--video.html.twig 的自定义模板,它可以用作所有视频页面的模板。但是,当我尝试根据此模板名称编写挂钩时:

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

这是行不通的。我认为我要么无法定义这样的钩子,要么我只是错误地命名了它。我发现了一些与此有些相关的线程,例如this https://www.drupal.org/node/1692202这似乎意味着我需要为所有节点定义一个钩子,然后编写一个单独处理每种类型的 if 语句。 所以.......

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Drupal 8 中的特定节点类型上使用预处理钩子 的相关文章

  • PHP:iCal 创建,如何在描述中换行

    我正在使用以下内容为 PHP 脚本创建 Outlook 日历邀请 然而 n 并没有在 Outlook 中给我一个新行 有没有办法做到这一点 如果你不能的话 那就显得很愚蠢了 function addToCalendar calEmail c
  • 选择影子根中的元素

    我想更改隐藏在影子根中的元素的属性 由于项目的性质 我无法直接引用 JS 中的文档 我只能使用自定义类 不适用于影子根 或 jQuery 但我不知道如何编写指向该文件的路径元素 该元素没有 部分 因此我无法在选择器中使用它 我已经尝试过的
  • PHP:回调函数

    PHP 中的某些函数需要回调函数 我如何自己在函数中执行此操作 首先 如何定义需要回调函数的函数 其次 如何提供自定义函数作为回调函数 如何提供常规函数 实例函数和静态函数 使用内置的call user func http php net
  • 使用Python从设备获取MAC地址

    我正在寻找一种方法 使用python 来获取layer II来自我本地网络上的设备的地址 Layer III地址是已知的 目标是构建一个脚本 定期轮询 IP 地址数据库 确保 MAC 地址没有更改 如果更改 则通过电子邮件向我发出警报 使用
  • 嵌入带有参数的 svg 对象

    谁有想法或提示 我想在 die svg 标签中嵌入一个 svg 对象并更改此参数 HTML SVG 未进行
  • 如何使用 Javascript 截断/切片/修剪字符串中的最后一个字符?

    我有一根绳子 12345 00 我希望它返回12345 0 我看过trim 但看起来它只是修剪空白并且slice我不明白这是如何运作的 有什么建议么 您可以使用子串 https developer mozilla org en US doc

随机推荐

  • 在 SQL Server 2008 R2 脚本向导中缺少脚本数据

    在我的 SQL Server 2008 R2 中 脚本向导的脚本选项屏幕在 表 视图选项 部分下查找我找到 脚本数据 行并希望将该选项设置为 True 但失败了 我没有找到任何脚本数据选项 为什么我的 SQL Server 2008 R2
  • PHP检查文件是否为音频文件

    我正在编写代码来上传音频文件 可以是任何格式 mp3 mp4 wav 等等 我不想编写所有 mime 类型的所有条件 然后检查上传的文件以验证 mime 类型 因为 我想接受所有音频文件 不仅仅是一两种格式 那么 有没有什么简单的方法来检查
  • Ionic 2 存储在卸载时不会清理 - 仅适用于已签名的 APK

    我正在使用 Ionic 2 存储来存储用户凭据 卸载应用程序时 存储不会清除 因此重新安装后 应用程序将获取先前用户的用户凭据 此问题仅发生在签名的 APK 中 在 Samsung on7 和 lenovo vivi 型号上进行了测试 卸载
  • iOS如何根据其中的UILabel制作UIView的动态宽度/自动布局

    我可能正在努力解决一些菜鸟问题 我有一个UIView其中我显示一些价格 我想要UIView根据价格具有动态宽度 如果是 1 欧元 那么它将是例如20pt 如果是 2300 欧元 那么就会像50pt宽度 我试图利用故事板的限制 但没有成功 是
  • Spring 和 /* url 模式

    我们有一个 的 url 模式并且请求到达我们的控制器 但我们总是得到 404 这是我们的 web xml
  • 谷歌面积图线下可变不透明度?

    我正在使用谷歌图表中的面积图 我想知道是否有办法设置每条线的不透明度 看这个例子 https developers google com chart interactive docs gallery areachart hl nl Simp
  • 如果参数为 NULL,如何从 WHERE 子句中删除条件

    我将 2 个参数传递给 PL pgSQL 函数 这是查询 SELECT FROM table WHERE col1 param1 AND col2 param2 两个参数都可以为 NULL 在这种情况下 应从WHERE clause 我怎样
  • 带 2 个按钮的警报

    我将在我的应用程序中添加一个指向网站的链接 用户将单击一个显示 网站 的按钮 然后将出现一个带有 2 个按钮的警报 其中一个按钮只是取消按钮 另一个按钮将打开网站 你能帮我解决这个问题吗 Thanks 将其放入您的头文件中 interfac
  • 使用互斥锁时尝试引用已删除的函数

    我在处理项目时遇到奇怪的错误 我创建了一个超级简单的示例来重现错误 我创建了一个类 我想在这个类中做的是为我的类提供一种 getter 函数来填充 a 的值struct 在主应用程序中 用户将实例化这个struct 将其传递给成员函数 并能
  • Z3 Solver Java API:意外行为

    通过向求解器添加条件 我想使用 solver check 检查是否存在解 因此 我创建了一个简单的示例来寻找 t1 的解决方案 我知道 t1 有一个解 即 t1 0 然而 求解器的状态不是 SATISFIABLE public static
  • 将 base64 字符串转换为与 OpenCV 兼容的图像

    我正在尝试将 JPEG 的 Base64 表示形式转换为可与 OpenCV 一起使用的图像 问题是我希望能够做到这一点而不必物理保存照片 我希望它保留在内存中 有更新的方法来实现这一点吗 我正在使用 python 3 6 2 和 OpenC
  • ZMQ套接字连接超时

    我正在使用 ZMQ cppzmq 的 C 绑定 并且尝试使用以下命令设置 TCP 套接字的连接超时 setsockopt 这样的方法 int connectTimeout 1000 socket setsockopt ZMQ CONNECT
  • 替换对shared_ptr中对象的所有引用

    是否可以替换shared ptr的多个实例引用的对象 可能我不太清楚 我举个例子 shared ptr a new Derived1 auto b a auto c b This function replaces the object w
  • TypeError 对象不可迭代

    当尝试循环 Django 模板中的变量时 出现以下错误 有问题的变量是我的 DetailView 子类中指定的模型的相关对象 类型错误位于 en applicants 50771459778 Householdmember 对象不可迭代 这
  • 如何在 PHP 中通过 cURL 发送 XML 和其他 post 参数

    我使用下面的代码将 XML 发送到我的 REST API xml string data 包含正确的 XML 并且它很好地传递到 mypi php set POST variables url http www server cu mypi
  • 解释器关闭时线程化导入

    蟒蛇的threading文档 http docs python org dev library threading html importing in threaded code states 所有导入尝试必须在解释器启动之前完成 自行关闭
  • 线程最佳实践

    我从事的许多项目的线程实现都很差 而我就是必须追踪这些问题的傻瓜 是否有公认的最佳方法来处理线程 我的代码总是等待一个永远不会触发的事件 我有点像设计模式之类的想法 假设 NET 类似的事情也适用于其他平台 嗯 有lots需要考虑的事情 我
  • 如何检测脚本中的Python版本2或3?

    我编写了一些脚本 它们要么仅在 Python 2 x 版本上运行 要么仅在 Python 3 x 版本上运行 如果脚本是从合适的 Python 版本开始的 我如何检测脚本内部 有没有类似这样的命令 major minor getPython
  • 为什么 MPI_Barrier 会导致 C++ 中的分段错误

    我已将程序简化为以下示例 include
  • 在 Drupal 8 中的特定节点类型上使用预处理钩子

    我已经成功使用预处理页面挂钩 例如 function mytheme preprocess page node front variables and function mytheme preprocess page node 12 var