Werkzeug - wie dynamische Menüstruktur abbilden?
Verfasst: Samstag 15. August 2009, 09:04
Hallo,
ich suche eine gute Strategie für eine Webseite eine dynamische Menüstruktur zu verwalten. Das Menü soll später einmal von einem Admin über eine Konfigurationsdatei o.ä. gestaltet werden. Das Menü soll klassisch auf einer Baumstruktur mit beliebiger Tiefe basieren. An jedem Knoten des Menüs soll eine Seite dargestellt werden.
Eine erste Idee von mir war es, diese durch due URLs abzubilden. Allerdings habe ich dann das Problem, dass ich nicht mehr so komfortabel auf das passende Rendering-Modul mappen kann.
Beispiel:
Anhand der (Teil)-URLs könnte man nun das Menü aufbauen und wüße bei jedem Request, in welcher Tiefe man sich befindet usw.
Haken, den ich sehe: Ich kann das Rule-System von werkzeug nur bedingt ausnutzen. Für die article-Funktion wüßte ich ja doch gerne, welcher Artikel grad aufgerufen wurde. So müßte ich nun erst den Pfad auseinandernehmen und das letzte Stück als Parameter nehmen. Bei werkzeug könnte ich das sonst ja schöner so lösen:
Hier habe ich aber in der URL keine Info zum Menü.
Daher kam ich als nächstes auf die Idee das Routing statisch zu lassen und die Menüstruktur extern zu mappen, basierend auf der jetzigen URL.
Beispiel:
Haken hierbei: Bei komplexeren Modulen könnte die URL mehr beinhalten, als es das Menü soll. Insofern wird das Mapping dann komplexer.
So, ich hoffe das war einigermaßen verständlich und es kommen Vorschläge dazu. Ich finde in den div. Dokus dazu nichts explizit verwertbares, da dort immer von einer festen Menüstruktur ausgegangen wird. Aber vielleicht und hoffentlich habe ich ja was überlesen
ich suche eine gute Strategie für eine Webseite eine dynamische Menüstruktur zu verwalten. Das Menü soll später einmal von einem Admin über eine Konfigurationsdatei o.ä. gestaltet werden. Das Menü soll klassisch auf einer Baumstruktur mit beliebiger Tiefe basieren. An jedem Knoten des Menüs soll eine Seite dargestellt werden.
Eine erste Idee von mir war es, diese durch due URLs abzubilden. Allerdings habe ich dann das Problem, dass ich nicht mehr so komfortabel auf das passende Rendering-Modul mappen kann.
Beispiel:
Code: Alles auswählen
"/" -> start()
"/Impressum" -> article()
"/Tischtennis" -> article()
"/Tischtennis/Turnier" -> turnier()
Haken, den ich sehe: Ich kann das Rule-System von werkzeug nur bedingt ausnutzen. Für die article-Funktion wüßte ich ja doch gerne, welcher Artikel grad aufgerufen wurde. So müßte ich nun erst den Pfad auseinandernehmen und das letzte Stück als Parameter nehmen. Bei werkzeug könnte ich das sonst ja schöner so lösen:
Code: Alles auswählen
Rule("/article/<string:name>", endpoint="article")
Daher kam ich als nächstes auf die Idee das Routing statisch zu lassen und die Menüstruktur extern zu mappen, basierend auf der jetzigen URL.
Beispiel:
Code: Alles auswählen
"/article/Impressum" -> "/Impressum"
"/article/Mannschaftsfahrt" -> "/Tischtennis/Mannschaftsfahrt"
So, ich hoffe das war einigermaßen verständlich und es kommen Vorschläge dazu. Ich finde in den div. Dokus dazu nichts explizit verwertbares, da dort immer von einer festen Menüstruktur ausgegangen wird. Aber vielleicht und hoffentlich habe ich ja was überlesen
