Перенос строк в пунктах меню

Главные вкладки

Аватар пользователя Iegova Iegova 13 октября 2011 в 6:45

Есть необходимость сделать возможным переносить часть строки пункта меню на новую строку. То есть в определенное месть строки нужно вставлять
. Если вставлять
прямо в текст пунка меню, то при обработке функцией l() спецсимволы заменяться на html-сущности и вместо переноса будет выводиться
. Первое что приходит в голову, это придумать шаблон для замены, например %br%, и вместо него с помощью регулярных выражений перед выводом подставлть
. Подскажите как это можно сделать, с помощью какого хука. Или возможно есть готовое решение для этого?

Комментарии

Аватар пользователя wolfphantom wolfphantom 20 января 2012 в 13:43

Вставьте следующее в template.php и можно будет использовать тег br в пункте меню. (И незабудте очистить кэш)
Проверено на Drupal 7 работает, для шестой версии скорее всего не будет работать.

/**
* Override theme_menu_link() to add line breaks in menu items
* that have a <br> or <br/> or <br />  placed in them.
*/

function YOURTHEME_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']);

  // Replace text line breaks with html line breaks.
  $output = str_replace("&lt;br&gt;", "<br/>", $output);
  $output = str_replace("&lt;br/&gt;", "<br/>", $output);
  $output = str_replace("&lt;br /&gt;", "<br/>", $output);
 
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

Аватар пользователя audisport audisport 18 декабря 2015 в 14:18

подскажите, пожалуйста, а как сделать тоже самое для nicemenu?
Большое спасибо!

Отбой. у меня проблемы с названием темы, не называйте тему theme иначе получите нерабочие моменты)