用面板覆盖分类法页面,并为节点提供基于分类法的breadcrumb踪迹



我有一个页面,其中节点使用基本分类法进行分类(例如"species"-> animal ->哺乳动物->猿)。

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

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

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

找到。

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

我怎样才能同时达到这两个目标?非常感谢!

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

  • 启用两个子模块自定义分类面包屑自定义面板面包屑
  • 设置自定义面包屑配置页面
  • 使自定义面包屑面板的权重最高,在配置页面的底部(覆盖自定义面包屑分类法,它本身不与面板一起使用)

然而,自定义面包屑是在面板之后构建的,因此您不能在面板中实际使用它。但是你可以打印到page.tpl.php中,在面板外。

编辑:

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

它只是在配置页面上显示了一个非常误导的文本("使用分类面包屑面板")。经过更多的研究,事实证明,当panels的权重小于custom_breadcrumbs_taxonomy时,它会起作用(参见数据库中的表system)。

如果你真的想在面板中显示面包屑,你可以使用下面的方法:

  • 配置分类
  • 确保系统表中的权重正确,如
  • 所述
  • 在页面面板中添加面包屑
  • 添加一个预处理函数,将面板中的面包屑替换为最终的面包屑,由custom_breadcrums_taxonomy构建,如:

(注意:我的面板是类型页,它在content部分)

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']);
  }  
}

最新更新