Hallo,
folgendes Szenario:
- per TemplaVoila wird eine Selectorbox definiert, die verschiedene vordefinierte Werte aufnimmt.
- diese sollen im Hauptmenu eine CSS-Klasse von jeweils einem Hauptmenupunkt definieren
Dies ist das gewünschte Ergebnis:
<ul>
<li class="ICH BIN TV WERT 1">Item 1</li>
<li class="ICH BIN TV WERT 2">Item 2</li>
<li class="ICH BIN TV WERT 3">Item 3</li>
<li class="ICH BIN TV WERT 1">Item 4</li>
</ul>
Dies ist aktueller Stand:
- TV-Wert kann in der Seite eingetragen werden
- TV-Wert kann im Typoscript in temp.meintvwert ausgelesen werden
- Denselben Wert kann ich in lib.meinmenu verwenden
- ich kann ihn aber irgendwie nicht in lib.meinmenu.1.NO ansprechen
Was mache ich falsch?
Danke!
VG,
C.
Hei zusammen,
gelöst - nicht schön, aber selten:
lib.mainMenu = COA
lib.mainMenu {
wrap = <ul class="mainnav">|</ul>
10 = HTML
10.value = <li class="
11 =< plugin.tx_flexformgetfield_pi1
11 {
uid = 90
defReturn = nav_5
field = field_mainmenucolor
}
12 = HTML
12.value = ">
13 = HMENU
13 {
special = directory
special.value < lib.mainMenu.11.uid
entryLevel = 0
1 = TMENU
1.NO {
}
}
20 = HTML
20.value = <li class="
21 =< plugin.tx_flexformgetfield_pi1
21 {
uid = 91
defReturn = nav_5
field = field_mainmenucolor
}
22 = HTML
22.value = ">
23 = HMENU
23 {
special = directory
special.value < lib.mainMenu.21.uid
entryLevel = 0
1 = TMENU
1.NO {
}
}
...usw...
}
Der Effekt ist der, daß die Redakteure in den Seiteneigenschaften die Klasse der List-Elemente bestimmen können. Dadurch werden hier Farbauszeichnungen pro Hauptnavigationspunkt ausgegeben.
Nachteil: wenn mehr als N Hauptnavipunkte ausgegeben werden sollen, muß ein Techniker ran.
Da es hier um eine klassische Corporate Website geht (d.h. der Aufbau der Startseite ist jetzt fest definiert, da ändert sich ein paar Jahre nichts mehr), ist das für dieses Projekt so ok. Andere Projekte werden ggf. eine andere Lösung brauchen.
HTH,
C.
bißchen hübscher:
lib.mainMenu = COA
lib.mainMenu {
wrap = <ul class="mainnav">|</ul>
10 = HTML
10.value = <li class="
11 =< plugin.tx_flexformgetfield_pi1
11 {
uid = 90
defReturn = nav_5
field = field_mainmenucolor
}
12 = HTML
12.value = ">
13 = HMENU
13 {
special = directory
special.value < lib.mainMenu.11.uid
entryLevel = 0
1 = TMENU
1.NO {
}
}
20 < .10
21 < .11
21.uid = 91
22 < .12
23 < .13
23.special.value < .21.uid
...usw...
}
...noch besser, nämlich mit Überschriften der jeweiligen Directory-Seite:
Constants:
# als container für die erste Menustruktur wird hier die Seite 100 genommen
# damit wird die typoscript-Konstante "erste_seite" gefüllt
erste_seite = 100
zweite_seite = 101
...
Setup:
(auf Verwendung der Variablen $erste_seite achten 🙂)
lib.mainMenu = COA
lib.mainMenu {
wrap = <ul class="mainnav">|</ul>
10 = HTML
10.value = <li class="
11 =< plugin.tx_flexformgetfield_pi1
11 {
uid = {$erste_seite}
defReturn = nav_5
field = field_mainmenucolor
}
12 = HTML
12.value = ">
13 = HMENU
13 {
special = directory
special.value < lib.mainMenu.11.uid
entryLevel = 0
1 = TMENU
1.expAll = 1
1.NO {
doNotLinkIt = 1
}
2 = TMENU
2.expAll = 1
2.stdWrap.dataWrap = <div class="rubrik_nav subnav-1"><div class="subnav-headline">{DB:pages:{$erste_seite}:title}</div><ul class="subnav">|</ul></div>
2.NO {
#allWrap = <li>|</li>
wrapItemAndSub = <li>|</li>
}
3 = TMENU
3.wrap = <ul class="subnav-2">|</ul>
3.NO {
allWrap = <li>|</li>
}
}
Nebenher können die Konstanten auch dazu genutzt werden, daß die UIDs nicht mehr x Mal im Typoscript eingetragen werden: Sie werden ganz einfach ein einziges Mal als Konstante festgelegt und können dann auch entsprechend leicht geändert werden.
Damit könnte man dann die Konstanten auch z.B. via einer Extension zugänglich machen, oder als Auswahlmenu für Seiten aus dem Seitenbaum usw., sprich: der Kunde hat's ein bißchen leichter, wenn er die Menus pflegen will.
Vielleicht nutzt dies hier ja mal jemandem.