您需要的第一件事是您当前所在页面的mlid:
$q = variable_get('site_frontpage', 'node') == $_GET["q"] ? '' : $_GET["q"];
$current_menu_item = db_select('menu_links' , 'ml')
->condition('ml.link_path' , $q)
->fields('ml', array('mlid', 'plid'))
->execute()
->fetchAll();
现在如果这个菜单项的plid是0,那么我们知道它是一个顶级菜单项,如果它不是0那么我们需要得到父项.所以我们想得到的树的顶部mlid是:
$top_level_mlid = $current_menu_item->plid == 0 ? $current_menu_item->mlid : $current_menu_item->plid;
然后你需要加载完整的菜单:
$full_menu_items = menu_tree_all_data('main-menu');
现在循环所有菜单项,只需获得我们想要的位:
foreach($full_menu_items as $menu_item) {
if($menu_item['link']['mlid'] == $top_level_mlid) {
$links = $menu_item['below'];
break;
}
}
$links现在保存您所在菜单特定部分的所有链接.
并将该数组作为菜单输出到页面上:
echo theme('links__system_secondary_menu', array(
'links' => $links,
'attributes' => array(
'id' => 'secondary-menu',
'class' => array('links', 'clearfix')),
'heading' => array(
'text' => t('Secondary menu'),
'level' => 'h2',
'class' => array('element-invisible')
)
));