Siehe da, ich hab im Grunde das selbe Problem in PyLucid:
http://pylucid.htfx.eu/phpBB2/viewtopic.php?t=46
z.Z. hab ich allerdings schon eine Lösung dafür, denn sonst hätte ich kein Hauptmenü oder Sitemap:
main_menu.py SiteMap.py
Allerdings möchte ich das Hauptmenü erweitern, sodas ich auch TABs benutzten kann. Generell soll es dann diese Möglichkeiten geben:
<lucidTag:main_menu/> - Generiert das bisherige "normale" Baum-Menü
<lucidFunction:main_menu>[0]</lucidFunction> - Generiert eine TAB-Liste der ersten Menü-Ebene
<lucidFunction:main_menu>[1:]</lucidFunction> - Generiert ein Baum-Menü ohne die erste Ebene
@tabellar: Ich hab erstmal deine Version erweitert bzw. geändert. Ich hab z.B. keine Kategorien und keine "deep" Angabe. Außerdem funktioniert deine Variante nur mit zwei Ebenen. In PyLucid hab ich aber keine feste tiefe. Somit hab ich es mal rekursiv gemacht:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pprint
#database select -> cursor.execute(sql)
#db_category_tree = cursor.fetchall()
db_category_tree = [
[1, 0, '1'],
[2, 0, '2'],
[3, 1, '1.2'],
[4, 1, '1.3'],
[5, 2, '2.1'],
[6, 2, '2.2'],
[7, 5, '2.1.1'],
[8, 5, '2.1.2'],
[9, 0, '3'],
]
#create tree_model
tree = {}
tree[0]= {'name': 'root', 'childs': []}
for row in db_category_tree:
tree[row[0]]= {'name': row[2], 'childs': []}
tree[row[1]]['childs'].append(row[0])
print pprint.pformat(tree)
print
#simple tree_view
def tree_view(tree, parent=0):
for child in tree[parent]['childs']:
print tree[child]['name']
if tree[child]['childs'] != []:
tree_view(tree, child)
print "Tree view:"
tree_view(tree)
Ausgabe:
{0: {'childs': [1, 2, 9], 'name': 'root'},
1: {'childs': [3, 4], 'name': '1'},
2: {'childs': [5, 6], 'name': '2'},
3: {'childs': [], 'name': '1.2'},
4: {'childs': [], 'name': '1.3'},
5: {'childs': [7, 8], 'name': '2.1'},
6: {'childs': [], 'name': '2.2'},
7: {'childs': [], 'name': '2.1.1'},
8: {'childs': [], 'name': '2.1.2'},
9: {'childs': [], 'name': '3'}}
Tree view:
1
1.2
1.3
2
2.1
2.1.1
2.1.2
2.2
3
Nun muß ich das ganze in drei Verschiedene Varianten ausbauen:
SiteMap:
Das ist quasi fertig, die Lösung von oben.
normales Menü:
Das verhalten des Hauptmenü's, wie auf
http://pylucid.org
TAB Menü:
Anzeige nur der ersten Ebene (Wohl kein Problem). Anzeige der Unterpunkte nur ab Level 1. Also wenn man z.B. gerade bei Punkt 2.1 ist, sollte das angezeigt werden: