Eindeutige IDs in allen Menüs Drupals

Montag: 20. Apr 2009
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

Noch keine Bewertungen vorhanden

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

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.