Drupal 8 - template_preprocess_node 不工作

我创建了一个具有“Teaser Full Width”视图模式的文章列表视图。该页面看起来不错,并列出了文章。当我尝试使用 编辑某些内容时template_preprocess_node(&$variables),挂钩在 Teaser Full Width 中不起作用。但是当我单击任何文章时,在单个节点中的工作相同。


<?php

function templatename_preprocess_node(&$variables) {

   kint($variables);die('test');

}

?>

我已经在 StackOverflow 中解决了不同的问题。

  1. 开发模块已启用。

  2. 有条件试过 if ($variables['view_mode'] == 'teaser_full_width'){ ... }

  3. 尝试print_r代替kint.

  4. 尝试通过更改max_allowed_packet.

  5. templatename启用验证并设置为默认值。

  6. 缓存已清除。

(文章列表页面)模板文件:-node--article--teaser-full-width.html.twig

template_preprocess_html 在此页面上工作正常。

template_preprocess_node 不在此页面上工作。

(文章单页)模板文件:-node--article--full.html.twig

两个钩子都工作正常。

有谁知道问题是什么?我的 Drupal 版本是 8.6.10。


红糖糍粑
浏览 181回答 1
1回答

至尊宝的传说

根据 drupal 的文档 template_preprocess_node() 是节点模板的钩子。由于视图列表页面包含节点但不是节点页面,因此 template_preprocess_node() 在那里不起作用。但是,它仍然是一个 html 页面,因此 template_preprocess_html() 在那里工作。简单来说,您的“文章列表视图”是一个页面而不是节点,因此 template_preprocess_node() 不起作用。
打开App,查看更多内容
随时随地看视频慕课网APP