Hallo zusammen,
in meinem Seitenbaum gibt es eine Seite mit dem Namen Projekte. Dort ist eine Extension eingebunden mit der die Projekte und Projektkategorien gepflegt werden. Nun möchte ich, dass die Projektkategorien als Sub-Menüpunkte angezeigt werden, wenn der Navigationspunkt Projekte aktiv ist. Als wären es normale Seiten unterhalb der Seite Projekte.
Quasi so:
- Startseite
- Referenzen
--- Referenzen Unterseite 01
--- Referenzen Unterseite 02
- Projekte
--- Projekt 01
--- Projekt 02
--- Projekt 03
- Kontakt
- Impressum
grün = Normale Seiten
rot = Datensätze aus Ordner
Ich habe schon eine userfunction geschrieben welche mir das passende Array zurückgibt nur wie bekomme ich den normalen Seitenbaum und die userfunction vereint?
Gibt es diese Möglichkeit überhaupt oder muss ich die komplette Navigation über eine userfunction erstellen?
Danke und Gruß,
Lukas
Hallo Lukas.
Innerhalb der TMENUITEMs stehen Dir zahlreiche Eigenschaften mit stdWrap-Eigenschaften zur Verfügung. Diese kannst Du nutzen, um den Menüpunkt bzw. dessen normales Verhalten zu überschreiben, falls eine bestimmte Seite (die Projekt-Oberseite) aufgerufen ist.
Es sollte funktionieren mit passender Kombination aus override.if.equals und der userFunction. Evtl. statt override mit append - müsst ich mir auch genauer anschauen.
Viele Grüße
Julian
Danke Julian, einen Schritt weiter bin ich schon gekommen.
marks.MAIN_NAVIGATION = HMENU
marks.MAIN_NAVIGATION {
wrap = <ul id="main-navigation">|</ul>
1 = TMENU
1 {
expAll = 1
NO.subst_elementUid = 1
NO.stdWrap.wrap = | (id: {elementUid})
NO.wrapItemAndSub = <li>|</li>
}
2 = TMENU
2 {
wrap = <ul class="sub">|</ul>
stdWrap.prepend = CASE
stdWrap.prepend {
key.field = pid
default = TEXT
default.value = <div style="border: 1px solid #ff00ff;" class="clearfix">
3 = TEXT
3.value = <div style="border: 1px solid #ffff00;" class="clearfix">
}
stdWrap.append = </div>
NO.wrapItemAndSub = <li>|</li>
}
}
Über die pid konnte ich den gewünschten Navigationspunkt identifizieren. Als Test habe ich einen farbigen Wrap eingesetzt, funktioniert wunderbar.
Nur muss ich die Abfrage ja noch höher ansetzen. Eigentlich noch über
2 = TMENU
denn dort müsste ich ja dann ein weiteres HEMNU mit einer userfunc einbinden.
Ich werkel mal weiter. Wenn jemand eine helfende Idee hat - ich bin dankbar.
Okay, ich glaube ich komme der Sache näher.
Mit folgendem Ts greife ich für jeden Menüpunkt die Datensätze aus dem Ordner ab:
marks.MAIN_NAVIGATION = HMENU
marks.MAIN_NAVIGATION {
wrap = <ul id="main-navigation">|</ul>
1 = TMENU
1 {
[...]
}
2 = TMENU
2 {
itemArrayProcFunc = user_implementProjectsInNav->makeMenuArray
wrap = <ul class="sub">|</ul>
NO.wrapItemAndSub = <li>|</li>
}
}
Was ich jetzt eigentlich nur noch brauche ist eine Abfrage, die anhand der pid die Funktion itemArrayProcFunc aufruft oder eben nicht.
Oder habe ich einen Denkfehler?