Eindeutige IDs in allen Menüs Drupals

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

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i>
  • Zeilen und Absätze werden automatisch erzeugt.

Weitere Informationen über Formatierungsoptionen

CAPTCHA
Diese Frage ist um sicher zu stellen, dass es sich um einen Menschen und nicht einen Computer handelt. Dies ist zur Spamabwehr notwendig.
2 + 18 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.