我有一个页面,其中节点使用基本分类法进行分类(例如"species"-> animal ->哺乳动物->猿)。
- 我想用面板覆盖分类法页面
- 我还想确保所有节点都得到一个基于默认分类法的漂亮的面包屑
我已经分别成功地解决了#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']);
}
}