Probleme mit Menübaum, bzw. "versteckten" Links

Diablo1

Grünschnabel
Hi Leute,

ich bin leider ein ziemlicher Neuling im Bereich PHP. Vor kurzem habe ich mir ein Script für einen "Menü - Baum" aus dem Internet geladen und entsprechend angepasst. Das Menü läuft auch einwandfrei, alle Punkte werden angezeigt / aufgeklappt etc.

Aber ich habe ein Problem : Ich möchte unter dem Submenüpunkt "Songtexte & Sounds" eine Site einrichten wo diverse Songtexte von A - Z angesehen werden können. Solange sich der User auf der Site "songtexte.php" befindet wird der Menpunkt "Discographie" aufgeklappt dargestellt. Sobald aber der User einen Songnamen aus der Übersicht auswählt um auf die Site mit dem Text zu gelangen klappt "Discographie" wieder zu, weil ja der jeweilige Songtext nicht über die Hauptnavigation erreichbar ist, sondern nur über die "Songtexte.php" - Site.
Wie kann ich erreichen, dass der Menüpunkt aufgeklappt bleibt, selbst wenn der User auf eine Site "springt" die nicht über das Hauptmenü erreichbar ist ?

Habe unten meinen kompletten Code eingefügt. Dieser befindet sich in der Datei menue.inc und wird per "Include" in die einzelnen Sites eingefügt.

Ich habe schon ziemlich viel gegoogelt und auch in diesem und anderen Foren gesucht. Da sich diese Frage aber nicht mit einem Schlagwort definieren lässt wurde ich leider nicht fündig. Mir ist auch kein Befehl bekannt, über den ich googeln könnte um eine Lösung zu finden.

Wäre super, wenn mir jemand helfen könnte und erklären kann wie eine entsprechende Lösung aussehen muss oder zumindest den Befehl kennt den ich googeln könnte. Bin, wie gesagt ein absoluter "Dummie" was PHP angeht, da ich erst begonnen habe es zu lernen.

Vorab schon einmal vielen Dank für Eure Hilfe und liebe Grüße

Diablo 1


PHP:
<?php

$menu = array (

"HOME" => array ("home.php"),
"NEWS" => array ("news.php"),
"TERMINE" => array ("termine.php"),

"DISCOGRAPHIE" => array ("discographie.php",
"Songtexte & Sounds" => "songtexte.php",
"CD - Kritiken" => "cdkritiken.php"),

"BIOGRAPHIE" => array ("biographie.php",
"Vita" => "vita.pdf"),

"LINKS" => array ("links.php"),
"KONTAKT" => array ("kontakt.php"),
"BOOKING" => array ("bookings.php"),
"IMPRESSUM" => array ("impressum.php")

);

?>

<?php

$uri = basename(getenv("REQUEST_URI"));

foreach($menu as $main => $mainlink){
foreach($mainlink as $sub =>$sublink){
$x = count ($mainlink);

if($sub[0] == "" && $mainlink[0] == $uri && $x > 1) {
echo "<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if($sub[0] == "" && $mainlink[0] == $uri && $x == 1) {
echo "<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if($sub[0] == "" && $x > 1) {
echo "<div class=\"menue\">
              <a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if($sub[0] == "" && $x == 1) {
echo "<div class=\"menue\">
              <a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if($mainlink[0] == $uri) {
echo "<div class=\"menue\" style=\"margin-top: 0px\">
                <a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

if(array_search($uri,$mainlink)&& $sub[0] != ""){
if($uri == $sublink){
echo "<div class=\"menue\" style=\"margin-top: 0px\">
                                 <a class=\"navigation_u\"> $sub</a></div>";
}

else{
echo "<div class=\"menue\" style=\"margin-top: 0px\">
                <a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

}
}
}
?>
 
Ich hab jetzt grade nicht die Zeit das zu testen, aber ich hab nen Lösungsvorschlag:

Du kannst über $_GET eine Variable z.B. $disco übergeben, wenn das Menü Discographie dann geöffnet ist, die Variable auf 1 setzen, und wenn ein anderes Menü geöffnet wird, die Variable dann auf 0 setzen.

Eine zweite Möglichkeit wäre über einen Cookie, das ganze zu realisieren.
Beim Seitenaufruf den Cookie mit $disco=0 schreiben, wenn dann der Menüpunkt Discographie gedrückt wird, dann den Cookie auf 1 setzen. Eigentlich die gleiche Funktionsweise wie oben.
Vorteil: Der User bekommt von der Variable nichts mit, und ist meiner Meinung nach einfacher zu verwirklichen als der erste Vorschlag.
Nachteil: Cookies müssen erlaubt sein.

Für das erstellen von Cookies gibts genügend Tutorials, wenn du dir da was ansiehst, ist es ziemlich einfach.
 
Hi,

danke für Deinen Vorschlag. Leider kann ich nicht so viel damit anfangen...wie meinst Du das mit der $_GET - Variante ? Kannst Du das genauer erklären ?

LG,
Diablo
 
du hast zum beispiel nen Link: index.php?disco=0
somit wird die Variable $_GET['disco'] dem Wert 0 zugewiesen
Wenn du dann hast: disco.php?disco=1
wird der Variable der Wert 1 zugewiesen

Jetzt kannst du im Menü, die Links so abändern.

Home (index.php?disco=0)
News (news.php?disco=0)
Disco (disco.php?disco=1)
if(disco=="1") {
2007 (disco2007.php?disco=1)
}
Diverses (diverses.php?disco=0)

Die $_GET Variable wird über den Link geändert, wenn du noch ne zweite Variable dabei hast werden die so verbunden index.php?var1=ersterWert&var2=Text.
Du kannst das auch anders Realisieren, wenn du mehr Menüpunkte mit Unterpunkten hast:
index.php?seite=news oder seite=disco
dann musst du eben die If Anweisungen so abändern.

Ich hoffe das ist einigermaßen verständlich erklärt
 
Zurück