我有一个预处理功能,当菜单是单级列表时工作正常。但是,我希望它与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 :(得分:0)
好吧,我放弃了这个,发现了一个很棒的模块,可以满足我的需求; Nice Menus。完整的css菜单控制,出色的模块。有关此模块的更多详细信息(来自其项目页面):
Nice Menus启用下拉/右/左可扩展菜单。它仅对大多数浏览器使用CSS,对IE6使用最少的Javascript。 (版本2为所有浏览器使用Superfish jQuery插件,可以选择禁用JS,并且仅针对可以处理它的浏览器回退到CSS。)
目前可以使用三种样式/类型的菜单:水平,菜单下拉;垂直,菜单飞向左边;垂直,菜单向右飞。有一个手册页面提供了使用Nice菜单的网站列表。
Nice菜单会创建可能与任何现有网站菜单关联的块,这些菜单可以放置在主题中可以放置普通块的任何位置。对于主题者,也可以通过使用提供的主题功能直接将菜单主题为Nice菜单,因此不需要块。主链接菜单的特定主题功能可用。主题功能还允许开发人员传入他们制作的自定义菜单树(即不使用Drupal菜单。)有关如何在文档中使用主题功能的更多信息。
该模块带有一个简单的通用配色方案,可以通过将覆盖CSS添加到主题的常规样式表或者通过创建Nice Menus CSS文件并告诉Nice Menus使用它而不是它自己的默认值来完全覆盖通过全局主题配置。附带的README.txt文件和手册中提供了几个CSS覆盖示例。