2010-06-02 63 views
0

我想根据当前正在显示的页面的节点类型,在左边栏块中分配一个特定的菜单。我认为它应该看起来像这样,但我被卡住了。Drupal - 根据节点类型将菜单分配给块

function my_module_nodeapi(&$node, $op) { 
    switch ($op) { 
    case 'view': 
     if ($node->type == "large_reptiles") 
     { 
     //menu_set_active_menu_name('menu_reptile_menu'); 
     //menu_set_active_item('menu_reptile_menu'); 
     } 
    break; 
    } 
} 

回答

0

您不能使用hook_nodeapi。您应该自己在模块中创建块,并根据节点打印菜单。

function hook_block($op = 'list', $delta = 0, $edit = array()) { 
    switch ($op) { 

    case 'view': 
     if (arg(0) == 'node' && is_numeric(arg(1))) { 
      $node = node_load(arg(1)); 
     } 
     if (!empty($node) && node->type == '...') { 
      // Theme the menu you want 
     } 
     ... 
     else { 
      // Provide a default option 
     } 


    .... 
    } 
} 
+0

感谢您的及时回复! 如果节点以/ node_name而不是/ node/9999的形式出现,该怎么办? 是否有API将菜单分配给块? – ernie 2010-06-02 12:17:17

+0

@ernie您可以使用模块更改url的外观,但Drupal始终将节点映射为内部节点/ [nid]。 – googletorp 2010-06-02 12:25:39

相关问题