所以我有一个内容类型的“新闻”,然后是一个视图,它将一个新闻节点列表显示为一个菜单项。
当您查看新闻节点时,有没有办法在菜单树中突出显示新闻视图?
我有点意识到为什么这不起作用,以及为什么这样做可能是hacky,但必须有一种方法来拥有一个“默认”菜单项或节点可以显示的东西。
答案 0 :(得分:1)
实际上,我发现了一个基本上与上面的template.php相同的模块,允许你按内容类型分配默认菜单项。
它被称为Menu Trails。以下是项目页面的摘录:
...为Drupal的菜单系统添加了一些常识可用性
- 菜单路径实现主要/辅助链接,使当前菜单跟踪“活动”或突出显示。随附一个准备进入template.php的便捷代码段。
- 该模块提供了一种将节点(按类型或分类)广泛分类为落在已知菜单项“下”的方法。这些节点不会添加到菜单树中(使菜单管理系统保持理智),但它们将在查看时触发上述功能 - 保留用户的导航状态。
- 6.0新功能:菜单路径还可以为节点设置面包屑,使其与路径保持同步。
- 适用于6.0的新功能:菜单路径现在可以识别有机组,因此可以指定节点位于其所属的第一个组节点“下方”。
- 6.0新功能:令牌暴露给pathauto(以及其他令牌识别模块),允许在自动路径别名创建中使用菜单跟踪。
答案 1 :(得分:0)
假设我上面评论的答案是“是”,这是你可以通过主题文件夹中的template.php文件完成的事情
最终解决方案取决于您的设置,但通常大部分操作都会在phptemplate_preprocess_page
// Simplified, and untested in this form
function phptemplate_preprocess_page(&$vars) {
if (isset($vars['node'])) { // if we're looking at a node
$body_classes[] = (($vars['node']->type == 'News') || (arg(0) == 'News')) ? 'news_page' : ''; // Page is news page
}
else if (arg(0) == 'taxonomy') {
// ... Special handling for news taxonomy pages, if you want
} else {
$body_classes[] = "page-type-" . arg(0);
}
$body_classes = array_filter($body_classes); // Out! Out! Damn empty elements!
$vars['body_classes'] = implode(' ', $body_classes);
}
这将为您提供body.news_page
样式类,您可以将其与新闻菜单块的样式相结合,使其显示您喜欢的样式。
答案 2 :(得分:0)
如果Menutrails不起作用(对我来说没有),你可以通过以下方式自己做:
$somenode = menu_get_item('node/5');
menu_set_item($somenode);
答案 3 :(得分:0)
如果你在hook_nodeapi()中做了类似的事情,我发现你有更多的控制权。
// this code worked for me
$somenode = menu_get_item();
$somenode['href'] = 'node/5';
menu_set_item(NULL, $somenode);
您可能需要将自定义模块的重量设置为比核心模块更重:至少1