Уникальные идентификаторы для пунктов меню

Главные вкладки

Аватар пользователя k-s k-s 2 июня 2011 в 0:03

Нужны ID для пунктов меню. Делается это путем добавления куска кода в template.php, но все что я нашел - оно для 6-ки.

Может кто делал это для 7-ки или может проверить код на соответствие новому API?

Модуль Menu Attributes есть, но он с небольшим багом и дает в 10 раз больше настроек чем мне надо.

Комментарии

Аватар пользователя FORTIS FORTIS 2 июня 2011 в 14:37
function ИМЯТЕМЫ_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']);
/*==================*/
  static $item_id = 0;
  element_set_attributes($element, array('id' => 'id-' . $item_id++));
/*==================*/
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

както так

Аватар пользователя k-s k-s 12 июня 2011 в 3:18

А если мне надо id для ссылки, то это сойдет? Для l() нужно передавать массив с аттрибутами, а там уже какой-то передается, так что я его скопировал и дабовил туда id пункта меню. Может как-то по другому надо?

<?php
function ek_menu_link(array $variables) {
  
$element $variables['element'];
  
$sub_menu '';
  if (
$element['#below']) {
    
$sub_menu drupal_render($element['#below']);
  }

  

$attributes $element['#localized_options'];
  
$attributes['attributes']['id'] = array('menu-'.$element['#original_link']['mlid']);

  

$output l($element['#title'], $element['#href'], $attributes);
  return 
'<li' drupal_attributes($element['#attributes']) . '>' $output $sub_menu "</li>\n";
}
?>