Ein Menü aus Unterseiten lässt sich ganz leicht in TypoScript bauen. Hierzu einfach ein HMENU hernehmen, und via special = directory die passenden Einstellungen vornehmen:
20 = HMENU
20 {
// Menü der Unterseiten der aktuellen Seite
special = directory
special.value.data = TSFE : id
1 = TMENU
1 {
NO {
// ...
}
}
}
Problem
Nun trifft man gelegentlich aber auf Seitenstrukturen, bei denen Shortcuts in Verwendung sind, d.h. die aktuelle Seite eigentlich eine Menü der Unterseiten der Elternseite anzeigen sollte.
Hier wäre „Seite 2“ der Shortcut auf die erste Unterseite, und wir würden uns wünschen, dass folglich auf „Seite 2.1“ ein Menü der Unterseiten von „Seite 2“ angezeigt wird.
Lösung
Die Lösung ist hier mittels override auch recht fix erreicht:
20 = HMENU
20 {
// Menü der Unterseiten der aktuellen Seite (unabhaengig vom Treelevel)
special = directory
special.value.data = TSFE : id
// Falls aktuelle Seite aus einem Shortcut der Parent-Site hervorging, dann Unterseiten dieser anzeigen
special.value.override {
cObject = CONTENT
cObject {
table = pages
select {
pidInList >
pidInList.data = leveluid : -3
// @todo: siehe "Update"
//where = doktype = 4 AND ((shortcut_mode=0 AND shortcut = ###currentPage###) OR shortcut_mode=1)
where = doktype = 4 AND (shortcut_mode=0 AND shortcut = ###currentPage###)
markers {
currentPage.data = TSFE : id
}
}
renderObj = COA
renderObj {
10 = TEXT
10.field = uid
}
}
}
1 = TMENU
1 {
NO = 1
NO {
// ...
}
}
}
Über eine Datenbankabfrage suchen wir Seiten, die einerseits Elternseite unserer aktuellen Seite sind, zugleich aber auch von Typ „Shortcut“ (doktype=4) sind und als Ziel unsere aktuelle Seiten haben bzw. den Modus „First subpage of current page“ haben.
TYPO3 4.5-Spezialität:
Da uidInList erst aber 4.6 stdWrap-Eigenschaften hat, kann der Wert nicht dynamisch gesetzt werden, und kommt bei 4.5 der Defaultwert von pidInList = this in die Quere. Es muss also statt uidInList die Seiten-ID der Eltern-Eltern-Seite in die pidInList-Bedingung geschrieben werden. Diese ID erhält man am einfachsten aus der Rootline.
Update
Die Logik passt noch nicht für Modus „First subpage of current page“, falls wir uns nicht auf dieser ersten Unterseite befinden, sondern auf anderer Unterseite.
Hat jemand eine Idee, wie das mit berücksichtigt werden kann?