Um Menüpunkte (in Drupal) explizit anzusteuern ist es notwendig, dass diese eine eigene ID besitzen. Dies kann mit hinzufügen des folgendem Codes in die template.php des Themes erreicht werden.

template.php (Drupal 5)

<?php
function getMenuItemCounter($case=null){
  static $counter = 1;
  return ($case == 'reset') ? $counter=1 : $counter++ ;
}

function YOURTHEME_menu_tree($pid = 1) {
  getMenuItemCounter("reset");
  if ($tree = menu_tree($pid)) {
    return "\n<ul class="menu">\n". $tree ."\n</ul>\n";
  }
}

function phptemplate_menu_item($mid, $children = '', $leaf = TRUE, $extraclass = '') {
  $counter = getMenuItemCounter();
  return '<li id="menu-item-custom-id-' . $counter . '" class="'. ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) . ($extraclass ? ' ' . $extraclass : '') . '">'. menu_item_link($mid, TRUE, $extraclass) . $children ."</li>\n";
}
?></p>
<p>

template.php (Drupal 6)

<?php
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
  $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
  if (!empty($extra_class)) {
    $class .= ' '. $extra_class;
  }
  if ($in_active_trail) {
    $class .= ' active-trail';
  }
  $id = preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));
  return '<li id="'.$id.'" class="'. $class .'">'. $link . $menu ."</li>\n";
}
?>

Vor der Nutzung natürlich gut testen, denn die Nutzung ist auf eigene Gefahr.

Quelle: http://drupal.org/node/310356

Neuen Kommentar schreiben