5

我试图弄清楚如何将跨度标签添加到自定义菜单中的某个菜单链接。我只需要在自定义菜单链接中的一个链接上使用它。猜测预处理函数并尝试theme_menu_item_link()没有运气,似乎根本没有被调用。

4

2 回答 2

6

在下面找到解决方案。

请注意,如果您使用的是Superfish模块,theme_menu_link()则在这种情况下将不起作用,因此请theme_superfish_menu_item_link改用。

德鲁巴 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在所有上述代码中替换为您的主题的机器名称。

于 2014-03-12T11:20:02.077 回答
1

找到了答案!需要使用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

在那里我可以找到我正在寻找的项目并进行相应的调整。

于 2012-11-20T17:09:04.727 回答