【发布时间】:2012-11-20 16:28:59
【问题描述】:
我试图弄清楚如何将跨度标记添加到自定义菜单中的某个菜单链接。我只需要在自定义菜单链接中的一个链接上使用它。猜测预处理函数并尝试 theme_menu_item_link() 没有运气,似乎根本没有被调用。
【问题讨论】:
我试图弄清楚如何将跨度标记添加到自定义菜单中的某个菜单链接。我只需要在自定义菜单链接中的一个链接上使用它。猜测预处理函数并尝试 theme_menu_item_link() 没有运气,似乎根本没有被调用。
【问题讨论】:
在下面找到解决方案。
请注意,如果您使用Superfish 模块,theme_menu_link() 在这种情况下将不起作用,因此请改用theme_superfish_menu_item_link。
Drupal 7
/*
* Implements theme_menu_link().
*/
function THEME_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$element['#localized_options']['html'] = TRUE;
$linktext = '<span class="tab-inner">' . $element['#title'] . '</span>';
$output = l($linktext, $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
Drupal 7(带有 Superfish)
/*
* Implements theme_superfish_menu_item_link().
* Theme a superfish menu item link,
* to override menu item to insert span tags
*/
function THEME_superfish_menu_item_link(array $variables) {
$menu_item = $variables['menu_item'];
$link_options = $variables['link_options'] + array('html' => TRUE);
$linktext = '<span class="tab-inner">' . $menu_item['link']['title'] . '</span>';
return l($linktext, $menu_item['link']['link_path'], $link_options);
}
定义上述钩子后,清除缓存以重建主题注册表。
如果上述方法不起作用,如@weaveoftheride 建议的那样,请确保启用对超链接使用主题功能和对菜单项使用主题功能设置。通常这些应该默认启用。
Drupal 6(仅供参考)
/*
* Implements theme_menu_item_link().
*/
function THEME_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
$link['localized_options'] += array('html'=>true);
return l('<span>'.$link['title'].'</span>', $link['href'], $link['localized_options']);
}
注意:不要忘记在以上所有代码中将THEME替换为您的主题的机器名称。
【讨论】:
THEMENAME_menu_link 并清除缓存以重新加载注册表。
theme 替换为您的主题机器名称(所以nph),所以nph_superfish_menu_item_link 应该可以工作。否则我不知道为什么它不会。
找到答案了!需要使用theme_menu_link():
function theme_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
http://api.drupal.org/api/drupal/includes%21menu.inc/function/theme_menu_link/7
在那里我可以找到我正在寻找的项目并进行相应的调整。
【讨论】: