Drupal 7-抑制分类页面上节点的输出


10

有没有一种方法可以抑制分类页面上节点的输出,而无需安装模块(即仅在template.php中)?

标有分类术语的节点显示在“分类索引页面”上(例如yoursite.com/taxonomy/term/[id])。

Drupal 7中的新功能,分类索引页面可以附加字段。但是,如果尝试使用视图超越分类法页面(例如,以控制节点的显示方式),则不会显示“分类法索引”页面上的字段。

因此,我已将“分类视图”放置在“分类索引”页面上。这样,我可以控制节点的显示方式,并且仍然具有“分类索引”页面字段。

因此,分类页面仍在输出其节点。我可以通过将节点的预告片设置为隐藏来隐藏它们,但它仍会加载节点(因此,即使未显示节点,也将附加到节点的任何CSS / Jquery)。如何抑制节点出现,最好是从template.php内部出现?


为什么不想安装模块?使用模块更容易实现某些事情。
Martin Schlagnitweit 2012年

Answers:



8

来自http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/的解决方案很适合我:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

注意:您应该重置站点的缓存。


注意:这将禁用站点上任何分类术语页面的节点列表。
Duncanmoo

@Peter Lozovitskiy我这样做,并遇到“注意:使用未定义的常量'分类法'”错误!
shekoufeh 2015年

@shekoufeh,我已经更正了代码(以逗号替换),现在尝试此代码。
Peter Lozovitskiy 2015年

2

您必须从$ page变量中删除节点。

template.php中,您可以这样做:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

在您的page.tpl.php中使用以下代码:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

这将从所有词汇和术语中删除节点。如果您只想从某些词汇中删除某些词汇或词汇中的所有词汇,这些词汇arg(2)包含tid加载词汇,然后更新if语句。


它可以工作,但仍保留寻呼机。这意味着正在加载节点,浪费了服务器资源。无论如何,感谢您的提示,我已经在使用您的方法了:)但是从理论上讲,仍然存在更好的方法。
int_ua 2012年

0

您几乎可以在template.php中执行任何操作,但是不建议这样做。使用CMS的目的是将数据,行为和外观分开。template.php文件是主题层的一部分,您应该使用它来调整网站的视觉样式。

如果要调整站点的行为(在这种情况下:控制某些项目显示在某个列表中),则需要更改行为,因此您可以安装和配置模块。如果要构建自定义内容列表,则“ 视图”模块正是您所需要的。

在您的情况下(如果我理解正确),您希望将分类术语的字段显示在用该术语标记的节点列表上方。您可以通过创建一个views块在视图中重新创建该视图,该块从URL中获取术语ID并显示所需的信息。


谢谢回复!我已经在使用Views覆盖分类页面。但是,我使用“视图替代”作为块而不是页面,因为我需要保持分类法页面上的字段可见。唯一的问题是分类法页面仍会加载节点,这似乎是不必要的。
big_smile 2011年

我不理解“分类页面上的字段”的含义,但是隐藏页面内容并将其替换为块听起来并不像是正确的解决方案。如果仅使用常规页面视图覆盖分类页面,那么您到底缺少哪些功能?(也许您可以更新您的原始问题,我会相应地改善答案。)
marcvangend 2011年

答案也更新了。
marcvangend 2011年

不幸的是,您的答案似乎无效。如果尝试将分类法字段引入视图,它将显示每个单个字段的内容(而不是仅属于正在查看的特定页面的内容)。
big_smile 2011年

0

我使用CSS隐藏分类法内容,但是将其显示设置为custom和blanking似乎是一个更好的选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.