2010-05-03 69 views
0

我有一個預處理函數,當菜單是單​​層列表時,可以正常工作。不過,我希望它能工作w/suckerfish菜單。我想添加一個類到頂層菜單項,以便我可以設置它的樣式。這是我用於單級菜單代碼:Drupal主題預處理函數 - 主鏈接和suckerfish菜單

function cti_flex_preprocess_page(&$vars, $hook) { 

// Make a shortcut for the primary links variables 
$primary_links = $vars['primary_links']; 

// Loop thru the menu, adding a new class for CSS selectors 
    $i = 1; 

    foreach ($primary_links as $link => $attributes){ 
     // Append the new class to existing classes for each menu item 
     $class = $attributes['attributes']['class'] . " item-$i"; 

     // Add revised classes back to the primary links temp variable 
     $primary_links[$link]['attributes']['class'] = $class; 
     $link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>'; 
     $i++; 
     } // end the foreach loop 

// reset the variable to contain the new markup 
$vars['primary_links'] = $primary_links; 

} 

我一直在試圖使用menu_tree()功能無濟於事,例如:

function cti_flex_preprocess_page(&$vars, $hook) { 

// Make a shortcut for the primary links variables 
$primary_links = $vars['primary_links']; 

// Loop thru the menu, adding a new class for CSS selectors 
    $i = 1; 

    foreach ($primary_links as $link => $attributes){ 
     // Append the new class to existing classes for each menu item 
     $class = $attributes['attributes']['class'] . " item-$i"; 

     // Add revised classes back to the primary links temp variable 
     $primary_links[$link]['attributes']['class'] = $class; 
     $link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>'; 
     $i++; 
     } // end the foreach loop 

// reset the variable to contain the new markup 
$vars['primary_links_tree'] = menu_tree(variable_get('menu_primary_links_source', '$primary_links')); 

} 

任何想法,將不勝感激。

回答

0

那麼,我放棄了這一點,並找到了一個偉大的模塊,做我所需要的; Nice Menus。完全的CSS菜單控制,出色的模塊。有關此模塊的更多詳細信息(來自其項目頁面):

尼斯菜單啓用下拉/右/左擴展菜單。它僅對大多數瀏覽器使用CSS,對於IE6使用最小的Javascript。 (版本2爲所有瀏覽器使用Superfish jQuery插件,並提供禁用JS的選項,並退回到僅適用於可處理CSS的瀏覽器的CSS。)

目前有三種風格/類型的菜單可供選擇:水平,菜單下降;垂直,菜單飛向左側;垂直,菜單向右飛。有一個手冊頁面提供了使用Nice菜單的網站列表。

尼斯菜單創建的塊可能與任何現有的站點菜單相關聯,只要普通塊可以放置在主題中,就可以放置該菜單。對於工作者來說,也可以直接使用提供的主題功能將菜單作爲Nice Menu進行主題化,因此不需要塊。主鏈接菜單的特定主題功能可用。主題函數還允許開發人員傳遞他們製作的自定義菜單樹(即不使用Drupal菜單)。有關如何在文檔中使用主題函數的更多信息。

該模塊附帶了一個簡單的通用顏色方案,可以通過將覆蓋CSS添加到主題的常規樣式表或通過創建Nice菜單CSS文件並告訴Nice菜單使用該菜單而不是其默認菜單來完全重寫一個通過全球主題配置。包含的README.txt文件和手冊中提供了幾個CSS替代示例。