Всем доброго времени суток. Теперь я обращусь немного с другой проблемой. В моей теме есть файл template.php, в котором переопределена функция создания primary links. Моя задача сделать так, чтобы пункты меню можно было бы обрабатывать HTML-кодом, т.е. если я при создании меню пишу в качестве названия пункта <i>Пункт меню</i>
- то выводилось бы именно Пункт меню (курсивом).
В функции есть строчка l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, $html);
. Я знаю, что там есть атрибут 'html' (по-умолчанию FALSE) который отвечает за то, обрабатывается ли HTML код. Однако я не знаю, где поменять в этой строчке значение.... Я пробовал l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'],TRUE, $html);
и l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], TRUE, TRUE);
, но это не помогало. Сама функция стандартная, но я немного издевался над ней. Если нужно, то вот вся функция :
$output = '';
if (count($links) > 0) {
$output = '<ul'. drupal_attributes($attributes) .'>';
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = $key;
// Automatically add a class to each link and also to each LI
if (isset($link['attributes']) && isset($link['attributes']['class'])) {
$link['attributes']['class'] .= ' ' . $key;
}
else {
$link['attributes']['class'] = $key;
}
// Add first and last classes to the list of links to help out themers.
$extra_class = '';
if ($i == 1) {
$extra_class .= 'first ';
}
if ($i == $num_links) {
$extra_class .= 'last ';
}
$output .= '<li '. drupal_attributes(array('class' => $extra_class . $class)) .'>';
// Is the title HTML?
$html = isset($link['html']) && $link['html'];
// Initialize fragment and query variables.
$link['query'] = isset($link['query']) ? $link['query'] : NULL;
$link['fragment'] = isset($link['fragment']) ? $link['fragment'] : NULL;
if (isset($link['href'])) {
if(stripos($link['title'],'&br!')!= 0){
$link['mystring']= l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, $html);
$output .= '<div CLASS="primary-menu-span primary-menu-span-br" STYLE="align:center;display:inline-block;line-height:0.8em;vertical-align:top;position:relative;top:-0.35em;padding-top:0.15em;padding-bottom:0em;">';
$output .= '<SPAN STYLE="font-size:0.9em;">';
$output .= substr($link['mystring'],0,stripos($link['title'],'&br!')+stripos($link['mystring'],'>')+1);
$output .= '</SPAN><div CLASS="second_string_menu" STYLE="font-size:0.65em;">';
$output .= substr($link['mystring'],stripos($link['title'],'&br!')+stripos($link['mystring'],'>')+9, stripos($link['mystring'],'</a>')-(stripos($link['title'],'&br!')+stripos($link['mystring'],'>')+9));
$output .= '</div></A></div>';
}else{
$output .= '<SPAN CLASS="primary-menu-span" STYLE="vertical-align: top">';
$output .= l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], TRUE, $html -> TRUE);
$output .= $link['text'];
$output .= '</SPAN>';
}
}
else if ($link['title']) {
//Some links are actually not links, but we wrap these in <span> for adding title and class attributes
if (!$html) {
$link['title'] = check_plain($link['title']);
}
$output .= '<span'. drupal_attributes($link['attributes']) .'>'. $link['title'] .'</span>';
}
$i++;
$output .= "</li>\n";
}
$output .= '</ul>';
}
Буду признателен тем, кто сумеет помочь...
Комментарии
Drupal 6 l($text, $path, $options = array())
я могу лишь помочь тем что скажу , что у вас функция для drupal 5
Вам сюда
Спасибо. Нашёл функцию подходящей версии, но всё равно не совсем разобрался как заставить l НЕ фильтровать хтмл-код... Куда именно вписать параметр? ( Никак не дойду до этого... Может конечно попробую её там переопределить...
Итак, я всё-таки нашёл решение, пусть и не идеальное - и поделюсь им со всеми, кто захочет использовать хтмл в пунктах меню. В файле темы template.php определить функцию new_l, и в качестве содержания функции взять функцию l, но заменить кусок
($options['html'] ? $text : check_plain($text))
на($options['html'] ? $text : $text)
и вписать в функции генерации меню вместо l new_l.