Использование html кода в заголовках меню

При добавлении нового пункта меню в название ссылки меню, которое будет анкором для ссылки, невозможно добавить html код. Это связано с тем, что текст при темизации пропускается через функцию chek_plain() и соответственно все теги будут выводиться как обычный текст. Но иногда нужно добавить дополнительную разметку для некоторых пунктов меню. Это бывает нужным, когда в качестве анкора нужно использовать изображение или анкор нужно обернуть дополнительно тегами. Для решения данной задачи нужно в файле template.php переопределить функцию темизации пункта меню theme_menu_link().


/**
 * Implements theme_menu_link()
 */
function MYTHEME_menu_link(array $variables) {
  $element = $variables['element'];
  // Устанавливаем параметру html значение TRUE
  $element['#localized_options']['html'] = TRUE;
  $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";
}

После установки параметра html в значение TRUE и очистки кеша появиться возможность использовать html разметку в названии пункта меню. Для примера сделаем пункт меню изображением.

menu-html.png