2010-05-11 55 views
4

在世界如何可能?我發誓,我讀了相當於3個百科全書無濟於事。我嘗試了區域內的解決方案,page.tpl.php和塊。他們都沒有給我我需要的東西......而且我知道還有那麼多其他人也需要這個!Drupal 6:打印純正的主鏈接和所有的子女

我得出結論,我想打印出我的page.tpl.php中的菜單...所以沒有塊解決方案,請。

我希望能夠遍歷主菜單鏈接(AND子節點)並重寫輸出,以便沒有默認的Drupal類標記。我發現的最接近的是這個例子:

<?php if (is_array($primary_links)) : ?> 
<ul id="sliding-navigation"> 
<?php foreach ($primary_links as $link): ?> 
<li class="sliding-element"><?php   
     $href = $link['href'] == "<front>" ? base_path() : base_path() . drupal_get_path_alias($link['href']); 
     print "<a href='" . $href . "'>" . $link['title'] . "</a>";    
     ?></li> 
<?php endforeach; ?> 
</ul> 
<?php endif; ?> 

正如你所看到的,鏈接被轉載使用自定義UL和LI類......這是偉大的!但是,沒有孩子正在打印。我如何擴展這段代碼,讓所有的孩子成爲列表的一部分?注意:我不希望孩子只出現在他們的父母頁面上,他們必須始終在場。否則,我計劃的下拉菜單是沒用的。

我真誠地感謝您提前減輕我的巨大頭痛!

回答

5

一旦獲得了page.tpl就很難影響輸出 - 您可能會更好地尋找template.php函數。

這是一個我用來改變的我的主要環節類:

function primary_links_add_icons() { 
    $links = menu_primary_links(); 
    $level_tmp = explode('-', key($links)); 
    $level = $level_tmp[0]; 
    $output = "<ul class=\"links-$level\">\n"; 
    if ($links) { 
    foreach ($links as $link) { 
     $link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']); 
     $output .= '<li class="sublevel">' . $link .'</li>'; 
    }; 
    $output .= '</ul>'; 
    } 
    return $output; 
} 

然後在page.tpl.php中我只是把它叫做是這樣的:

<?php if ($primary_links) :?> 
    <?php print '<div id="menu">'; ?> 
    <?php print primary_links_add_icons(); ?> 
    <?php print '</div>'; ?> 
<?php endif;?> 
+0

現在是否會影響Drupal中的所有菜單?我在覆蓋這樣的鏈接時遇到的一個問題是,它甚至影響了我的邊欄內的鏈接......令人討厭。 – dcolumbus 2010-05-12 20:24:08

+0

沒有,這應該只會影響您的主鏈接 - 因爲template.php函數只是處理這些。你使用這個代碼,是這樣的效果? – MrFidge 2010-05-13 08:14:10

+0

我很抱歉...我在過去的一週裏看到了許多類似的功能,它們都融合在一起。 「primary_links_add_icons」隻影響主鏈接,是的。謝謝。 – dcolumbus 2010-05-14 01:54:14

1

我不得不添加<span>到我的鏈接樣式,所以我overrode theme_links()includes/theme.inc 您可以將該函數複製到您的template.php,將其重命名爲yourthemename_links(),並根據需要進行修改。 此函數輸出ul,li標籤,drupal_attributes,'first','last','active'等類,並影響整個站點的菜單。

如果您需要以不同方式輸出主要和輔助輸出,您可能還想查看includes/menu.inc中的函數,其中包括theme_menu_local_tasks()和menu_local_tasks()。 MarkLNH

+0

這是否也是Drupal 7 Themes的良好做法? – dcolumbus 2010-05-12 20:23:07