2011-04-07 70 views
1

全部。這個問題可能有一個非常簡單的答案,但它讓我佔領了幾個小時。Drupal 7 - 菜單到UL

我有我的主菜單,它是我正在建設的Drupal站點的相應塊。像所有其他Drupal菜單一樣,它包含一系列鏈接到網站的各個部分。我可以將它的塊分配給一個區域,並且菜單鏈接出來都很好,並且使用標題和小項目點進行格式化。問題是,我正在爲這個網站製作一個自定義的主題,我需要能夠在沒有添加任何垃圾的情況下使用鏈接,最好是像ul這樣簡單的東西。

是否有任何函數需要一個菜單​​併產生一個包含所有鏈接的ul?

也許有一些方法可以減少菜單的塊到ul。

我一直在試驗theme_menu_tree(...)theme(...)無濟於事。

謝謝!

回答

0

您可以撥打menu_build_tree並查看它的輸出並從中構建一個ul。但是,儘管默認菜單輸出具有「cruft」負載,但它是一個ul,並且應該可以用CSS進行主題化。

如果你真的想建立自己的菜單,我會反向工程的另一個模塊,這樣做就像Nice Menus

+0

好吧,我試過''並且會導致SQL語法的巨大錯誤»'PDOException:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法中有錯誤; )檢查對應於您的MySQL服務器版本的手冊,以找到正確的語法以在'')附近使用)ORDER BY p1 ASC,p2 ASC,p3 ASC,p4 ASC,p5 ASC,p6 ASC,p7 ASC,p8 ASC,p9'at line 2:'** TRUNCATED **'(ml.menu_name IN())ORDER BY p1 ASC,p2 ASC,p3 ASC,p4 ASC,p5 ASC,p6 ASC,p7 ASC,p8 ASC,p9 ASC; _menu_build_tree()中的Array()(/var/www/includes/menu.inc的第1370行)。' – enthdegree 2011-04-08 00:05:17

+0

好吧,我已決定按照您的建議分塊切塊輸出。它不是很優雅或漂亮,它增加了頁面加載,但它現在可以工作,直到我能找到更好的東西。 – enthdegree 2011-04-08 18:05:39

2

我發現你可以做通過CSS<H2>標題設置爲display: none和設置<LI>最變化對於水平導航欄,標記爲float: left


但是...如果你想從Drupal的數據建立自己的菜單,這裏是我工作的一個網站一些代碼。它建立了一個兩級菜單。如果您需要,我相信您可以進一步簡化此代碼。

//----------- primary menu (horizontal with drop-downs) ------------------------- 

$params = array('max_depth' => 3); 
$menu = menu_build_tree('main-menu', $params); 
$variables['menu'] = $menu; 

$html = '<ul>'; 

foreach($menu as $item_menu) { //for each main element 

    $isSecondLevel = isset($item_menu['below']) && !empty($item_menu['below']); 

    if ($isSecondLevel) { 
     $html.= '<li>'; 
    } else { 
     $html.= '<li class="sg">'; 
    } 

    $html.= '<a class="topLevel" href="'.url($item_menu['link']['link_path']).'">';   
    $html .= $item_menu['link']['link_title']; 
    $html .= '</a>'; 

    //is there any sub elements to display 
    if ($isSecondLevel) { 
     $html.= '<ul>'; 

     foreach($item_menu['below'] as $item_submenu) { //for each sub element 
      $isThirdLevel=isset($item_submenu['below']) && ! empty($item_submenu['below']) ? 'main-menu-third_level' : ''; 

      $html.= '<li>'; 
      $html.= '<a href="'.url($item_submenu['link']['link_path']).'">'; 

      $html.= $item_submenu['link']['link_title']; 

      $html.= '</a>'; 
      $html.= '</li>'; 
     } 
     $html.= '</ul>';  
    } 
    $html.= '</li>'; 
} 
$html.= '</ul>'; 
$variables['main_menu_html'] = $html; 

此代碼被放在function pinkribbon_process_page(&$variables)template.php之內。菜單通過致電<?php echo $main_menu_html ?>

Simon打印。

P.S.其他人,請隨時編輯這個代碼清晰/簡單。

1

我建議你使用

menu_tree_output 

是這樣的:

print render(menu_tree_output(menu_build_tree('main-menu', $parameters))); 
+0

這是用於Drupal 7 – redfog 2012-11-04 14:52:46

+0

哇,更乾淨!謝謝你。 – enthdegree 2012-11-08 19:18:55