Menu_tree_all_dataを使用して2つの異なるカスタムメニューのメニューツリーを取得しようとしましたが、「ナビゲーション」メニューが機能するように使用しながら、空の配列を返しました。
誰が何が起こっているのかについて何か考えがありますか?
メニューツリーを印刷する場合は、 ここ と答えます。私はこれを試しましたが、解決策は機能しました!
<?php
$tree = menu_tree_page_data('menu-name'); // Replace menu-name with menu name you want to print
$first_level = db_query("SELECT mlid FROM {menu_links} where menu_name = 'menu-name' and plid = 0 ORDER BY weight ASC");
while ($item = db_fetch_object($first_level)) {
$mlid = $item->mlid;
// Extract subtree
$subtree = admin_console_menu_get_subtree($tree, $mlid);
// Render as HTML menu list
$content .= menu_tree_output($subtree);
}
return $content;
?>
/**
* Extract a specific subtree from a menu tree based on a menu link id (mlid)
*
* @param array $tree
* A menu tree data structure as returned by menu_tree_all_data() or menu_tree_page_data()
* @param int $mlid
* The menu link id of the menu entry for which to return the subtree
* @return array
* The found subtree, or NULL if no entry matched the mlid
*/
function admin_console_menu_get_subtree($tree, $mlid) {
// Check all top level entries
foreach ($tree as $key => $element) {
// Is this the entry we are looking for?
if ($mlid == $element['link']['mlid']) {
// Yes, return while keeping the key
return array($key => $element);
}
else {
// No, recurse to children, if any
if ($element['below']) {
$submatch = admin_console_menu_get_subtree($element['below'], $mlid);
// Found wanted entry within the children?
if ($submatch) {
// Yes, return it and stop looking any further
return $submatch;
}
}
}
}
// No match at all
return NULL;
}