Drupal:如何动态设置活动菜单项

1 drupal menu drupal-6

例如,我有"node/31".如果查看node/31,我希望drupal将菜单活动项设置为"galleries/lastgallery".怎么做?

<?php
function custom_nodeapi (&$node, $op, $a3 = NULL, $a4  = NULL){
    if ($op == 'view' && $node->nid == 31) {
           ???
        }
}
?>
Run Code Online (Sandbox Code Playgroud)

更新:我知道我可以使用menu_set_active_item.但在这种情况下,将不会显示选项卡(查看/编辑等选项卡).我相信它应该完成menu_set_active_trails,或者可能是menu_get_item/ menu_set_item某种方式,但我无法确切地说.

Pie*_*yle 8

出于类似的目的,我用过menu_set_item().您应该保留$path参数NULL并使用菜单项'galleries/lastgallery'作为as 的内部路径$router_item.

function custom_nodeapi(&$node, $op, $a3 = NULL, $a4  = NULL) {
  if ($op == 'view' && $node->nid == 31) {
    $path = drupal_get_normal_path('galleries/lastgallery');
    if($path && $menu_item = menu_get_item($path)) {
      menu_set_item(NULL, $menu_item);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • menu_tree_set_path()是一个更好的选择. (2认同)
  • 确实,但是在Drupal 7中引入了menu_tree_set_path(),问题在于Drupal 6. (2认同)