我想僅提取一部分導航菜單 - 管理菜單結構的一個部分。我可以加載整個導航菜單樹,但我看不到一個簡單的方法只是拉出它的一部分。只提取Drupal 6菜單的一部分
有沒有一種簡單的方法來做到這一點,還是我必須做一些哈克?
我想僅提取一部分導航菜單 - 管理菜單結構的一個部分。我可以加載整個導航菜單樹,但我看不到一個簡單的方法只是拉出它的一部分。只提取Drupal 6菜單的一部分
有沒有一種簡單的方法來做到這一點,還是我必須做一些哈克?
我不確定我完全瞭解情況,但您可能想看看Menu Block Split,它允許您將導航級別拆分爲塊。這是從其項目頁面摘錄:
...將任何菜單塊分成兩個不同的塊:第一個塊只有第一級菜單條目,第二個塊有任何第二級和子級菜單條目。您可以根據需要安裝儘可能多的分割塊。
看看功能menu_navigation_links。你傳遞一個菜單名稱(默認= 導航)和一個級別(默認= 0)。
謝謝,但不是我在找什麼。我需要一種方法來爲不是根的樹指定一個根節點。 'menu_navigation_links'讓我無法只顯示'admin/content'及其子項。 – ceejayoz 2009-08-18 22:25:17
不知道你會認爲這是一個簡單的方式,但你可以嘗試通過menu_tree_data()或menu_tree_page_data()抓住整個菜單樹,發現並提取你想從結果樹結構中的部分並通過menu_tree_output()呈現得到的子樹。
編輯:絆倒How to rendering a menu subtree在此期間 - 看起來像我的建議可以工作,但我絕對不會認爲這是很容易;)
我發現這個here這對我的偉大工程。
<?php
$menus = menu_tree_page_data(menu_get_active_menu_name()); //get menu tree for active menu
$output='';
foreach($menus as $data) {
if(!empty($data['link']['in_active_trail'])){
$link = theme('menu_item_link', $data['link']);
$extra_class = NULL;
if ($data['below']) {
$output .= theme('menu_item', $link, $data['link']['has_children'], menu_tree_output($data['below']), $data['link']['in_active_trail'], $extra_class);
}
else {
$output .= theme('menu_item', $link, $data['link']['has_children'], '', $data['link']['in_active_trail'], $extra_class);
}
}
}
return theme('menu_tree', $output);
?>
看起來可能有效。謝謝,我會試試看 – ceejayoz 2009-08-21 13:16:18