Товарищи, нужен совет.
Требуется для меню в тэгах "li" добавить уникальный класс. Использую вот этот механизм: http://drupal.org/node/310356. Он помогает только когда меню не подлежит изменению (новые пункты не добавляются) и когда меню не разворачивается, а у меня все наоборот: новые пункты регулярно добавляются, меню в некоторых пунктах разворачивается до третьего уровня.
Вопрос: может есть способ добавить реальный ID пункта меню в тэг "li"? Я ничего не нашел. Единственный выход - делать свою выдачу меню через модуль, но это как-то не комильфо.
P.S. Можно попробовать делать ID из href. Но если владельцы сайта включат pathauto, то тогда ссылки изменятся и ID тоже
Комментарии
В общем-то, у каждого пункта меню есть свой уникальный идентификатор. Тот, который назначен ему в таблице menu_router. Попробуйте темизировать [ru-api=theme_menu_item_link], там этот параметр должен содержаться.
Если модулями то есть по крайней мере два
menu class
menu attribute
на d.org
Эти модули добавляют класс и ID для ССЫЛКИ, а необходимо добавить то же самое для ТЭГа "li"
theme_menu_item_link темизирует ссылку, а мне нужно обработать тэг "li". ID для ссылки мне не нужен
Ну а как ты хотел. Человек не знает что такое dom элементы и их атрибутов. привыкнешь.
Чего такого есть в LI, что нельзя получить в A?
<li><a href="">Пункт 1</a></li>
<li><a href="">Пункт 2</a>
<ul>
<li><a href="">Пункт 2.1</a></li>
<li><a href="">Пункт 2.2</a></li>
<li><a href="">Пункт 2.3</a></li>
</ul>
</li>
<li><a href="">Пункт 3</a></li>
<li><a href="">Пункт 4</a></li>
</ul>
Каждый пункт имеет свою ширину, поэтому нужно иметь класс или ID именно у тэга LI, а не у A.
Пока решил вопрос при помощи конвертации атрибута "href" (/node/1 || /taxonomy/term/10) в формат node_1, taxonomy_term_10.
Я так и знал, что проблема в инлайновости тега А. Назначьте ему display: block и наслаждайтесь
Умник, может сам хоть что нибудь предложишь по существу?
Дэвушка почем помидоры?
Может и поздно но проблему решил так
Ставишь данный модуль http://drupal.org/project/menu_attributes в каждом меню ставишь id и этот код в template.php
<?php
function themename_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
if ( preg_match("/id=\".*\"/", $link, $matches) ) :
$id = " " . $matches[0];
$link = str_ireplace($id, "", $link);
endif;
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}
return '<li class="'. $class .'"' . $id . '>'. $link . $menu ."</li>\n";
}
?>
Я правильно понимаю - у вас теперь li имеет свой ID? Сделал все как вы советуете - id Только у ссылок появился.
Дайте ссылку как у вас получилось.