Есть необходимость сделать возможным переносить часть строки пункта меню на новую строку. То есть в определенное месть строки нужно вставлять
. Если вставлять
прямо в текст пунка меню, то при обработке функцией l() спецсимволы заменяться на html-сущности и вместо переноса будет выводиться
. Первое что приходит в голову, это придумать шаблон для замены, например %br%, и вместо него с помощью регулярных выражений перед выводом подставлть
. Подскажите как это можно сделать, с помощью какого хука. Или возможно есть готовое решение для этого?
Комментарии
l('ссылка
любой HTML', 'адрес ссылки', array('html'=> TRUE)); - с этим параметром ничего не будет заменяться.
Вставьте следующее в 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("<br>", "<br/>", $output);
$output = str_replace("<br/>", "<br/>", $output);
$output = str_replace("<br />", "<br/>", $output);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
подскажите, пожалуйста, а как сделать тоже самое для nicemenu?
Большое спасибо!
Отбой. у меня проблемы с названием темы, не называйте тему theme иначе получите нерабочие моменты)
ОК! Спасибо!