web-dev-qa-db-ja.com

カスタムメニューの空の配列を返すmenu_tree_all_data

Menu_tree_all_dataを使用して2つの異なるカスタムメニューのメニューツリーを取得しようとしましたが、「ナビゲーション」メニューが機能するように使用しながら、空の配列を返しました。

誰が何が起こっているのかについて何か考えがありますか?

3
theringostarrs

メニューツリーを印刷する場合は、 ここ と答えます。私はこれを試しましたが、解決策は機能しました!

<?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;
}
2
Anil Sagar