如何以编程方式打开Drupal 6子菜单?

时间:2010-03-27 13:48:14

标签: drupal drupal-6

我有一个包含两个级别的菜单,第二个级别显示在二级菜单中。

如何从菜单中链接的页面以外的其他页面以编程方式打开第二个菜单级别?

我查看了theme_preprocess_page和其他人,但无法弄清楚菜单项的状态如何从崩溃活动

4 个答案:

答案 0 :(得分:1)

只要将项目放在菜单中而不启用它们,您的问题是否可以解决?

如果没有,您可以查看Menu Trails模块,因为它可以更灵活地设置活动菜单项。

答案 1 :(得分:1)

我一直在讨论类似的问题。

这里有一些文档: http://api.drupal.org/api/group/menu/6 但在某些方面它有点粗略。

这个功能似乎可以解决问题: http://api.drupal.org/api/function/menu_navigation_links/6。了解如何设置级别(作为参数),以便菜单呈现您想要的内容。

这可能不是你想要的,但希望能指出你正确的方向!

答案 2 :(得分:0)

回答我自己的问题,这个节点api hook就可以了 受到Menu Trails模块的启发,迈克提到了。

function phptemplate_nodeapi(&$node, $op) {
  if($open_menu_for_this_node && $op == 'view') {
    $item = menu_get_item();
    $item['href'] = $menu_item_to_open;
    menu_set_item(NULL, $item);
  }
}

答案 3 :(得分:0)

在节点上下文之类的内容将起作用:

function HOOK_init() {

  if (arg(0) == 'exhibits' && arg(2) == 'publications') {
    $normal_path = drupal_get_normal_path( arg(0) .'/'. arg(1));
    $item = menu_get_item();
    $item['href'] = $normal_path;
    menu_set_item(NULL, $item);
  }

}

这个特殊的例子是当展览/ XXXXX / publications是路径时,希望展品/ XXXXX菜单处于活动状态。展品/ XXXXX /出版物不在相关菜单中,但展品/ XXXXX是。

drupal_get_normal_path()只需将展品/ XXXXX转换为节点/ NNNN