2011-08-23 27 views
6

我想在我的Drupal 7站點(主題名稱是「thompson」)的菜單之一的菜單項之間添加管道(「|」)。我想最好的方法是在我的template.php文件中創建一個名爲thompson_menu_link的函數。我這樣做,它正在成功修改菜單,但它改變了所有的菜單。有沒有一種方法可以爲我的網站上的一個菜單做到這一點?我可以修改特定菜單的theme_menu_link嗎?

目前,我使用管理頁面將腳註菜單(URL路徑:menu-footer-menu)添加到頁腳塊。我應該以不同的方式稱呼它嗎?

http://drupal.org/project/menu_attributes

這個模塊可以讓你添加特殊班級的一些菜單項,所以你只需要添加一個類rightpipe和:

+0

您添加的關於您採用的解決方案的部分應該寫爲答案。如果你把這個作爲答案寫出來,我會投票給它。 ':-)' – kiamlaluno

+0

對不起,這裏新增。不知道回答我自己的問題並接受它是否是不好的形式。 –

回答

2

顯然Drupal核心提供了theme menu links by menu name的能力。對於主菜單下面的主題函數應該工作

THEMENAME_menu_link__main_menu() 

另外,您可以使用Menu Block模塊創建菜單塊。除此之外,該模塊還創建了其他主題建議。從模塊的自述文件:

菜單塊使用Drupal核心的菜單主題功能。但是,它也提供了主題鉤子建議,可用於覆蓋由其調用的主題函數中的任何一個。 ...

  • theme_menu_link()可以通過創建一個覆蓋:
    • [主題] _menu_link __ [菜單名稱]()
    • [主題] _menu_link__menu_block()
    • [主題] _menu_link__menu_block __ [菜單名]()
    • [主題] _menu_link__menu_block __ [塊id號]()
+0

這應該是被接受的答案。道具@丹尼爾斯 –

0

你可以把它正在安裝下列模塊的最佳方式定義類,如:

.rightpipe { border-right: 1px solid black } 

.rightpipe { background: url(1pixel_line_separator.png) no-repeat center right } 
2

我搞砸了thompson_menu_link()函數了一下。我不喜歡我是如何做到的,但它完成了工作。基本上,它讀入菜單名稱,然後使用條件返回<li>元素。這裏是整塊:

function thompson_menu_link(array $variables) { 
    $element = $variables['element']; 
    $menuName = $variables['element']["#original_link"]["menu_name"]; 
    $sub_menu = ''; 

    if ($element['#below']) { 
    $sub_menu = drupal_render($element['#below']); 
    } 

    $output = l($element['#title'], $element['#href'], $element['#localized_options']); 

    if ($menuName == "menu-footer-menu" && !in_array("last",$element['#attributes']['class']) { 
    $finalString = '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>|\n"; 
    } 
    else { 
    $finalString = '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; 
    } 

    return $finalString; 
} 
+1

在if($ menuName ==「menu-footer-menu」&&!in_array(「last」,$ element ['#attributes'] ['class']){。需要另一個)'結尾處有錯誤。 – canadiancreed

相關問題