2010-05-03 70 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替代示例。