Здравствуйте, уважаемые пользователи Drupal! Совсем недавно имею дело с Drupal, но всё больше и больше нравится мне работать с этой штукой, познавая ее гибкость. Сейчас хочу вспомнить один сниппет, которым многие пользуются. Речь идет о раздельном меню с использованием primary/secondary links. Я решил воспользоваться этим сниппетом для реализации меню на сайте. Но в проекте дизайна для каждого пункта меню планировался разный CSS и разный скрипт, который выполнялся при клике. Посему я решил немножко изменить код сниппета, чтоб получить нумерацию пунктов вида:
Для этого в template.php вставляем немного измененный код вместо предложенного по ссылке описанной выше:
<?php
function phptemplate_links($links, $attributes = array()) {
if (!
count($links)) {
return '';
}
$new = 0;//add counter for menuitems
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level ".$attributes['class']. "\">\n";
foreach ($links as $index => $link) {
$output .= '<li';
$new++;//add 1 to counter
if (stristr($index, 'active')) {
$output .= ' class="active'.$new.'"';
}// frontpage AND current-link in menu is <front>
elseif((drupal_is_front_page()) && ($link['href']=='<front>')){
$link['attributes']['class'] = 'active';//add class active to <li
$output .= ' class="active"';//add class active to <a
}
else $output .= " class=\"punkt".$new."\"";//add class punkt to <li
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
}
$output .= '</ul>';
return
$output;
}?>
Проверьте,всё работает! Теперь мы получили каждый пункт с разным классом и можем легко стилизовать наше меню!! Надеюсь, кому-нибудь поможет такой мод.
Комментарии
а пример использования есть?
данное решение конфликтует с модулем ajax-comments, так как заменяет классы не только у primary и secondary links, но и у комментариев, а код упомянутого модуля цепляет действия непосредственно на дефолтовые имена линков.
Как-то не подумал об этом, использовал такую штуках только на красивых "визитках". Для портала такое решение явно не подойдет...
В таких случаях только вариант извлекать машинное имя меню как делает модуль Nice Menu