Xava: Dynamisches Menü

Beitrag lesen

Hallo Roland!

Wenn ich dich richtig verstanden habe, könnte das deine Lösung sein:

<?php
   $menu_array = array("Seite 1" => "/seite1/seite1.php",
                       "Seite 2" => "/seite2/seite2.php");
   echo "<ul>\n";

foreach($menu_array as $key => $value) {
      // Wenn die aktuelle URL mit dem Dateinamen $key endet
      if(preg_match(",".$value."$,i", $_SERVER['PHP_SELF']))
         echo "\t<li id="current">".$key."</li>\n";
      else
         echo "\t<li><a href="".$value."">".$key."</a></li>\n";
   }

echo "</ul>\n";
?>

$current = "Seite 1"

Diese Zeile brauchst du wegen $_SERVER["PHP_SELF"] nicht, da in ihr die akuelle URL hinterlegt ist.

In der if-Abfrage wird mittels einem regulären Ausdrucks geprüft, ob die aktuelle URL ($_SERVER["PHP_SELF"]) mit dem aktuellen Wert ($value) der foreach-Schleife aus dem Array ("$menu_array") endet.

So weit so gut. Nun möchte ich aber auch, das die Pfadangaben zu
den einzelnen Seiten passen. Liegt seite1.php im Ordner seite1
und seite2.php im Ordner seite2   und die beiden Ordner leigen im
selben Verzeichnis, so muss der Link in Seite 2 auf Seite 1 ja so
heißen: <a href="../seite1/seite1.php">Von Seite 2 zu Seite1</a>.
Wie kann ich jetzt noch erreichen, dass nicht ich immer die
Schrägstriche machen muss oder gibts da einen Trick?

Mit relativen Pfaden wirst du hier nicht weit kommen, denn das Menü liegt zentral in einer Datei, welches ja von mehreren unterschiedlichen Dateien aus unterschiedlichen Ordnern inkludiert und ausgeführt wird, so dass die Anzahl der Unterverzeichnisse variabel und somit nicht vorhersehbar ist.

Deshalb musst du die Ordner im Array $menu_array, wie oben im Quelltext bereits vorhanden, mit angeben.