2010-06-02 2 views
0
나는 현재 표시되는 페이지의 노드 유형에 따라 왼쪽 사이드 바 블록의 특정 메뉴를 할당 할

을 기반으로 차단할 수 있습니다. 나는 이것이 이런 모습이어야한다고 생각하지만, 나는 붙어있다.은 드루팔 - 메뉴를 지정하는 노드 유형

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/9999 대신/node_name으로 오면 어떻게 될까요? 메뉴를 블록에 할당하는 API가 있습니까? – ernie

+0

@ernie 모듈을 사용하여 URL의 모양을 변경할 수 있지만 Drupal은 항상 노드를 노드/[nid]로 내부적으로 매핑합니다. – googletorp