Alexander Brock: Menüsteuerung mit PHP

Beitrag lesen

Hallo Günther,

Ich möchte gern ein Menü mit zwei Ebenen realisieren. Das Schema etwa wie:

  1. Kapitel
  2. Kapitel
      2.1 Abschnitt
      2.2 Abschnitt
      2.3 Abschnitt ...
  3. Kapitel

Vorgaben sind:

  1. Der Menüpunkt der aktuell angezeigten Seite ist nicht verlinkt.
  2. Die Ausgabe des Menüs soll als Liste <ul><li></li></ul> erfolgen.
  3. Jetzt kommt das Problem: der jeweilige obere Kapitel-Menüpunkt soll nicht verlinkt sein, wenn einer der zugehörigen unteren Abschnitt-Menüpunkte aktuell angezeigt wird.

Dazu muss man das Script, das ich in [http://jeenaparadies.net/weblog/2004/may/php-menue@title=Jeenas Weblog] gepostet habe
nur geringfügig verändern:

function menu($eintrage) {
$selber = str_replace('index.php','',$_SERVER['PHP_SELF']);
$output = "<ul>\n";
foreach ($eintrage as $eintrag) {
  $output .= "\n<li>";
  $length = strpos(substr($eintrag['href'], 1),'/');
  if (isset($eintrag[0]) and
    strpos($selber,$eintrag['href']) !== false and
    substr($selber,0,$length) == substr($eintrag['href'],0,$length)
    ) {
   $output .= '<em title="'.$eintrag['title'].'">'.$eintrag['text'].'</em>';
   $output .= menu($eintrag[0]);
  }
  else {
   if ($selber == $eintrag['href']) {
    $output .= '<em title="'.$eintrag['title'].'">'.$eintrag['text'].'</em>';
   }
   else {
    if (empty($eintrag['title'])) {
     $output .= '<a href="'.$eintrag['href'].'">'.$eintrag['text'].'</a>';
    }
    else {
     $output .= '<a href="'.$eintrag['href'].'" title="'.$eintrag['title'].'">'.$eintrag['text'].'</a>';
    }
   }
  }
  $output .= '</li>';
}
return $output.'</ul>';
}

Funktioniert dann auch problemlos mit x-beliebig tief verschachtelten Menüs.

Gruß
Alexander Brock

--
SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
http://againsttcpa.com