Нужны ID для пунктов меню. Делается это путем добавления куска кода в template.php, но все что я нашел - оно для 6-ки.
Может кто делал это для 7-ки или может проверить код на соответствие новому API?
Модуль Menu Attributes есть, но он с небольшим багом и дает в 10 раз больше настроек чем мне надо.
Комментарии
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
/*==================*/
static $item_id = 0;
element_set_attributes($element, array('id' => 'id-' . $item_id++));
/*==================*/
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
както так
А если мне надо id для ссылки, то это сойдет? Для l() нужно передавать массив с аттрибутами, а там уже какой-то передается, так что я его скопировал и дабовил туда id пункта меню. Может как-то по другому надо?
<?php
$attributes = $element['#localized_options'];
$output = l($element['#title'], $element['#href'], $attributes);
function ek_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$attributes['attributes']['id'] = array('menu-'.$element['#original_link']['mlid']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
?>
element_set_attributes($element, array('id' => 'menu-' . $element['#original_link']['mlid']));
Но он же тогда не ссылке id дает, а элементу списка, в котором ссылка
да невнимательно посмотрел