Jeder der zum ersten Mal sein eigenes Theme in Drupal aufbaut, fragt sich: “Wie kann ich meine Navigation aufbauen? Wie kann ich einzelne Navigations-Ebenen separat ausgeben?”

Mit folgender Funktion ist es ganz einfach die Anfangs- und Endtiefe der Navigation, den Menü-Namen und zusätzliche html Attribute auszugeben.

function theme_menu ($art = 0, $depth = 100, $tree = "primary-links", $html = ‘id="sub-navigation"’, $current_depth = 0) { 
  if(is_string($tree)) $tree = menu_tree_page_data($tree); 
  $print = ($current_depth >= $start && $current_depth <= $depth); 
 
  $output = ""; 
 
  if($print) $output .= "<ul $html>"; 
 
  foreach($tree as $leaf) { 
    if($print) {
      $output .= "<li".($leaf["link"]["in_active_trail"] ? "class=‘active’").">"; 
    }
 
    if($print) {
      $output .= l($leaf["link"]["title"], $leaf["link"]["link_path"]); 
    }
 
    if($leaf["below"]) {
      $output .= theme_menu($start, $depth, $leaf["below"], $print ? "" : $html, $current_depth+1); 
    }
 
    if($print) {
      $output .= "</li>"; 
    }
  } 
 
  if($print) {
    $output .= "</ul>"; 
  }
 
  return $output; 
}

Diese Funktion einfach in die template.php Datei einfügen und dann im Template von einer beliebigen Stelle aufrufen.

Beispiele

Ich möchte nur die erste Ebene des Menüs “mein-menu-name” und der id=“navigation” ausgeben . Wie geht dies?

<?php print theme_menu(0, 0, "mein-menu-name", ‘id="navigation"’); ?>

Ok das gleiche, aber alles von der zweiter Ebene ausgehend

<?php print theme_menu(1, 100, "mein-menu-name", ‘id="sub-navigation"’); ?>

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.