我正在开发一个具有不同类别(分类法术语)的博客,我希望为博客页面和类别页面上显示的节点提供自定义节点模板。因为我的博客页面有一个视图,所以我能够为该视图上的节点使用这个模板:node- view -blog.tpl.php。但是,在www.example.com/alias/cat_name(别名为www.example.com/分类法/term/3)中加载的节点没有模板。
我尝试在template_preprocess_node()中建议一个节点模板,如下所示:
if(arg(0) == 'taxonomy') {
array_push($vars['theme_hook_suggestions'], 'node__view__blog');
}这方面的问题是,现在该页面中的所有节点都使用该模板呈现,包括我的侧栏中的节点。
有没有一种方法可以在template_preprocess_node中过滤页面的“主要内容”的唯一部分?
发布于 2013-05-19 10:43:41
我建议您使用视图覆盖默认术语页,然后将其作为主题,就像为其他视图所做的一样。您所要做的就是创建一个具有相同路径的视图(分类法/术语/%),它将覆盖默认页面。
甚至已经为此目的配置了一个视图,您只需启用它。
在列出管理页面的视图中,它被称为“分类法术语”。只需启用并配置此视图,然后就可以重写它的主题。
发布于 2013-05-19 14:55:33
为node.tpl.php文件调用的预处理/进程函数不会获得任何关于哪个区域包含将在页面中呈现的节点的信息。如果该信息不是来自$variables['classes_array']中的CSS类,则预处理/处理函数无法获得该信息。
您可以做的是按照@rooby的建议来做,或者建议使用一个模板文件而不是page.tpl.php。还请参阅钩子_页面_alter()中提供的有关页面呈现数组结构的信息。
https://drupal.stackexchange.com/questions/73495
复制相似问题