【问题标题】:Drupal - assign menu to block based on node typeDrupal - 根据节点类型将菜单分配给块
【发布时间】:2010-06-02 11:33:21
【问题描述】:

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

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;
  }  
}

【问题讨论】:

    标签: drupal drupal-navigation


    【解决方案1】:

    您不能为此使用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
            }
    
    
        ....
      }
    }
    

    【讨论】:

    • 感谢您的及时回复!如果节点以 /node_name 而不是 /node/9999 的形式出现怎么办?是否有 API 可以将菜单分配给块?
    • @ernie 您可以使用模块来更改 url 的外观,但 Drupal 将始终在内部将节点映射为 node/[nid]。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多