Hello,
Wenn dann auf einem Hauptmenüpunkt geklickt wird, zählt da Skript eins dazu und schon kann ich den nächsten Menüpunkt verändern.
Trenne, nicht nur in Gedanken, sondern auch im Script, Datenbeschaffung, Datenverarbeitung (icl. Vorbereitung für die Ausgabe) und die reine Ausgabe voneinander.
Du bekommst einen Request. Dieser enthält eine Anforderung, einen bestimmten Menupunkt anzuzeigen. Das kann über einen URL-Paramter erfolgen (empfohlen) oder auch über eine Postparamter, wenn Du Submit-Buttons oder sonstige Auswahlverfahren bevorzugst.
Dein Script isoliert diesen Parameter und erkennt, dass es zu ihm passend eine Antwort formulieren kann und darf.
Parallel zur eigentlichen Beantwortung der Frage (Response zum Request) möchtest Du dem User noch weitere Information, nämlich das Menu, zur verfügung stellen.
Du Lädst daher aus der Datenbank den Menubaum in Dein Array im Script oder auch in zwei, nämlich Hauptmenu und nächste Ebene (Untermenu) des angeforderten Punktes.
Nun lässt Du Dir Deine Ausgabevariable "$menu" generieren. Dafür verwendest Du sicher das <ul>-Element mit einer eigenen Klasse oder innerhalb eines "Containers" mit einer eigenen Klasse.
Beim Abarbeiten des Arrays, das ja eine Übermenge der angeforderten Daten enthält, vergleichst Du immer, ob der eigentlich angeforderte Menupunkt schon an der Reihe ist.
$out['menu'] = '';
$out['menu'] .= "<!-- -begin menu- -->\n";
$out['menu'] .= " <div> <ul>\n";
$out['menu'] .= " <ul>\n";
foreach($_hauptmenu as $hid => $hmenutext)
{
$aktiv = '';
if ($hid == $requested_site)
{
$link = $_SERVER['SCRIPT_NAME'].'?page=$hid';
$out['menu'] .= " <li class="hauptmenu aktiv">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
$out['menu'] .= make_submenu($hid);
}
else
{
$out['menu'] .= " <li class="hauptmenu">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
}
}
$out['menu'] .= " </ul>\n";
$out['menu'] .= " </div>\n";
$out['menu'] .= "<!-- -end menu- -->\n";
So ungefähr könnte das doch aussehen.
Du kannst nun auch eine Funktion daraus machen.
Mehr als zwei "offene" Menuebenen anzuzeigen, halet ich für normale Navigationen sowieso nicht für sinnvoll.
Allerdings musst Du über dem aktuellen "Hauptmenu", das ja ggf. auch schon selber eine tiefere Ebene sein kann, auch den Rückweg in die nächst höhere Ebene anbieten, wenn Du eben mehr als zwei Ebenen zulassen willst. Aber das solltest Du nun hinbekommen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)
