首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅为内容中的节点添加theme_hook_suggestions

仅为内容中的节点添加theme_hook_suggestions
EN

Drupal用户
提问于 2013-05-19 07:45:21
回答 2查看 491关注 0票数 1

我正在开发一个具有不同类别(分类法术语)的博客,我希望为博客页面和类别页面上显示的节点提供自定义节点模板。因为我的博客页面有一个视图,所以我能够为该视图上的节点使用这个模板:node- view -blog.tpl.php。但是,在www.example.com/alias/cat_name(别名为www.example.com/分类法/term/3)中加载的节点没有模板。

我尝试在template_preprocess_node()中建议一个节点模板,如下所示:

代码语言:javascript
复制
if(arg(0) == 'taxonomy') {
  array_push($vars['theme_hook_suggestions'], 'node__view__blog');
}

这方面的问题是,现在该页面中的所有节点都使用该模板呈现,包括我的侧栏中的节点。

有没有一种方法可以在template_preprocess_node中过滤页面的“主要内容”的唯一部分?

EN

回答 2

Drupal用户

回答已采纳

发布于 2013-05-19 10:43:41

我建议您使用视图覆盖默认术语页,然后将其作为主题,就像为其他视图所做的一样。您所要做的就是创建一个具有相同路径的视图(分类法/术语/%),它将覆盖默认页面。

甚至已经为此目的配置了一个视图,您只需启用它。

在列出管理页面的视图中,它被称为“分类法术语”。只需启用并配置此视图,然后就可以重写它的主题。

票数 1
EN

Drupal用户

发布于 2013-05-19 14:55:33

为node.tpl.php文件调用的预处理/进程函数不会获得任何关于哪个区域包含将在页面中呈现的节点的信息。如果该信息不是来自$variables['classes_array']中的CSS类,则预处理/处理函数无法获得该信息。

您可以做的是按照@rooby的建议来做,或者建议使用一个模板文件而不是page.tpl.php。还请参阅钩子_页面_alter()中提供的有关页面呈现数组结构的信息。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/73495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档