0

我有一个页面,其中节点使用基本分类法进行分类(比如说“物种”-> 动物-> 哺乳动物-> 猿)。

  1. 我想用面板覆盖分类页面
  2. 我还想确保所有节点都获得基于默认分类的漂亮面包屑

我已经分别成功解决了#1 和#2,但无法让它们一起玩。

对于#1,我发现的最佳解决方案是在 /admin/build/pages 中激活“分类术语模板”)。可以在http://drupaleasy.com/blogs/ultimike/2010/10/taxonomy-term-pages-steroids-using-panels-views找到一个很好的指南

对于 #2自定义面包屑模块​​(带有自定义分类面包屑子模块)和分类面包屑。不幸的是,这两种方法都劫持了 #1 使用的同一个钩子,这样做会禁用 #1。

如何同时实现这两个目标?非常感谢!

4

1 回答 1

1

对于 #2,您可以使用自定义面包屑。我不确定版本 6.x-1.x,但我可以确认 6.x-2.0 工作正常。您需要做的是:

  • 启用两个子模块Custom Breadcrumbs for TaxonomyCustom Breadcrumbs for Panels
  • 自定义面包屑配置页面进行设置
  • 使面板的自定义面包屑的权重最高,在配置页面的底部(以覆盖不与面板本身相处的分类的自定义面包屑)

但是,自定义面包屑是在面板之后构建的,因此您实际上无法在面板中使用它。但是您可以在面板外部的 page.tpl.php 中打印它。

编辑:

似乎面板的自定义面包屑与它无关:)

它只是在配置页面上显示了一个非常误导性的文本(“为面板使用分类面包屑”)。经过更多研究,结果证明它在panels权重较小的情况下有效custom_breadcrumbs_taxonomy(参见system数据库中的表格)。

如果你真的想在面板中显示面包屑,你可以使用这个(hack-ish)方法:

  • 配置分类面包屑
  • 确保权重在系统表中是好的,如解释的那样
  • 在页面面板中添加面包屑
  • 添加一个预处理函数,将面板中的面包屑替换为由 custom_breadcrumbs_taxonomy 构建的最终面包屑,例如:

(注意:我的面板是 page 类型的,它在contentsection 中)

function abn_preprocess_page(&$vars) {
  $old_breadcrumb = strstr( strstr($vars['content'],'<div class="breadcrumb">'), '</div>', true);
  if ($old_breadcrumb) {
    $old_breadcrumb .= '</div>';
    $vars['content'] = str_replace($old_breadcrumb, $vars['breadcrumb'], $vars['content']);
  }  
}
于 2011-08-11T18:44:11.957 回答