phpbar.de logo

Mailinglisten-Archive

[php] Dynamische Menus mittels assoziativen Arrays?

[php] Dynamische Menus mittels assoziativen Arrays?

Patrick Schuster php_(at)_phpcenter.de
Tue, 20 Aug 2002 18:38:31 +0200


Hallo zusammen,

Ich bin grade dabei ein altes Navigationsskript von mir umzuschreiben
(es gab dort eine Hauptnavigation und jeweils eine Stufe tief eine
Unternavigation). Ich würde es gerne so haben, dass ich praktisch eine
beliebig(!!) tiefe Unternavigation anlegen kann, z.B.

Home [link: index.php?nav=home]
Produkte [link: index.php?nav=produkte]
..Produkt1 [link: index.php?nav=produkt1]
..Produkt2 [link: index.php?nav=produkt2]
....Details [link: index.php?nav=produkt2details]
....Download PDF [link: index.php?nav=produkt2download]
..Produkt3 [link: index.php?nav=produkt3]
Kontakt [link: index.php?nav=kontakt]

Da ich zum speichern der Navigationsdaten keine Datenbank verwenden
will, habe ich mir überlegt, ob man es theoretisch in assoziativen
Arrays speichern könnte (am liebsten mit Hilfe von Klassen, bei denen
ich dann jeweils die HTML-Ausgabe je nach Projekt anpassen kann).

Also könnte man doch sowas basteln (natürlich vorrausgesetzt man hat die
Klasse und genau da liegt mein Problem):

----------------------
$menu = new NavigationCool;
// 1.Param = nav-name, 2.Param = Parent, 3.Param = Fullname, 4.Parameter
= visibility, eventuell noch weiter Parameter
$menu->MakeMenuEntry('home','top','Home',1);
$menu->MakeMenuEntry('produkte','top','Produkte',1);
$menu->MakeMenuEntry('produkt1','produkte','Produkt 1',1);
$menu->MakeMenuEntry('produkt2','produkte','Produkt 2',0);
$menu->MakeMenuEntry('produkt2details','produkt2','Details',1);
$menu->MakeMenuEntry('produkt2download','produkt2','Download',1);
$menu->MakeMenuEntry('produkt3','produkte','Produkt 3',1);
$menu->MakeMenuEntry('kontakt','top','Kontakt',1);

$nav = $_GET['nav']; // hier hole ich mir den Nav-Parameter
$menu->PrintMenu($nav); // hier soll also nur der Tree unter $nav
ausgedruckt werden
$menu->PrintMenu(); // hier soll die gesamte Navigation ausgedruckt
werden
----------------------

Ist also der 2.Parameter="top" so ist dies ein Toplevel Element,
ansonsten steht im 2.Parameter jeweils das Eltern-Element

Hat jemand eine Idee, wie ich das Assoziative Array am besten zusammen
baue (muss ich rekursiv arbeiten??).
Und wie komme ich an "Pfad", wenn ich z.B. $nav="produkt2details"
angebe, möchte ich sowas wie "produkte->produkt2->produkt2details"
erhalten. ??
Hintergrund ist der, dass ich bei z.B. $nav="produkt2details" lediglich
die Seite "/produkte/produkt2/produkt2details.php" includieren will und
die Navigation dynamisch aufgebaut wird (und der aktuelle
Navigationspunkt natürlich anders dargestellt wird), während alles
andere (Header, Footer, metatags, ... von einer zentralen Stelle kommen.

Oder ist das alles Mist (?!) und ich sollte es ganz anders lösen
(vielleicht gibt es ja schon vorgefertigte Scripts)?

Uiuiui, Fragen über Fragen
Freue mich auf jede Antwort! :-))

Patrick

--
Patrick Schuster


php::bar PHP Wiki   -   Listenarchive