Habe ein Menü, dass auch funktioniert hat. Es wurde jedoch nötig, bei geschützten Seiten eine Extra-Klasse mitzugeben. Mir ist nicht ganz klar warum, aber der unten gekennzeichnete Code überschreibt scheinbar meine Klassen für active- und current Zustände.
Kann hier wer helfen? (Sehe den Fehler einfach nicht.)
temp.MENU_LINKS = HMENU
temp.MENU_LINKS.special.value = 60
temp.MENU_LINKS.entryLevel = 1
# IF-Condition Trunk – Navigationsebene
[PIDupinRootline = 5] || [globalVar = TSFE:id=5]
temp.MENU_LINKS.special.value = 5
temp.MENU_LINKS.entryLevel = >
[end]
[PIDupinRootline = 11] || [globalVar = TSFE:id=11]
temp.MENU_LINKS.special.value = 11
temp.MENU_LINKS.entryLevel = >
[end]
[PIDupinRootline = 13] || [globalVar = TSFE:id=13]
temp.MENU_LINKS.special.value = 13
temp.MENU_LINKS.entryLevel = >
[end]
[PIDupinRootline = 9] || [globalVar = TSFE:id=9]
temp.MENU_LINKS.special.value = 9
temp.MENU_LINKS.entryLevel = >
[end]
[PIDupinRootline = 17] || [globalVar = TSFE:id=17]
temp.MENU_LINKS.special.value = 17
temp.MENU_LINKS.entryLevel = >
[global]
temp.MENU_LINKS {
special = directory
1 = TMENU
1 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO = 1
## Bereitet Probleme!!!!
NO.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams = class="rzcolorbox-content36"
IFSUB = 1
IFSUB.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
IFSUB.ATagParams = class="rzcolorbox-content36"
IFSUB = 1
IFSUB.wrapItemAndSub = <li class="menuparent">|</li>
ACTIFSUB < .IFSUB
## Bis hier
NO.wrapItemAndSub = <li class="l-1">|</li>
NO.stdWrap = upper
NO.ATagTitle.field = subtitle // title
NO.stdWrap.htmlSpecialChars = 1
ACT = 1
ACT < .NO
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
CUR = 1
CUR < .NO
CUR.wrapItemAndSub = <li class="l-1 current">|</li>
CUR.ATagParams = class="current"
}
2 < .1
2 {
NO.wrapItemAndSub = <li class="l-2">|</li>
ACT = 2
ACT < .NO
ACT.ATagParams = class="active"
CUR = 2
CUR < .NO
CUR.ATagParams = class="current"
}
3 < .1
3 {
NO.wrapItemAndSub = <li class="l-3">|</li>
ACT = 3
ACT < .NO
ACT.ATagParams = class="active"
CUR = 3
CUR < .NO
CUR.ATagParams = class="current"
}
4 < .1
4 {
NO.wrapItemAndSub = <li class="l-4">|</li>
ACT = 4
ACT < .NO
ACT.ATagParams = class="active"
CUR = 4
CUR < .NO
CUR.ATagParams = class="current"
}
} # end menu
lib.field_mainnav < temp.MENU_LINKS
Vielen Dank im Voraus.
Hallo.
Etwas versteckt, aber doch logisch, warum es so ist:
Ich nehme mal die erste Ebene und dort nur ACT
Von Dir angegeben als:
ACT = 1
ACT < .NO
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
Mit aufgelöstem "ACT < .NO" (ohne den Problemabschnitt):
ACT = 1
ACT.stdWrap = upper
ACT.ATagTitle.field = subtitle // title
ACT.stdWrap.htmlSpecialChars = 1
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
Mit aufgelöstem "ACT < .NO" (mit Problemabschnitt):
ACT = 1
ACT.stdWrap = upper
ACT.ATagTitle.field = subtitle // title
ACT.stdWrap.htmlSpecialChars = 1
ACT.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class="rzcolorbox-content36"
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
Der Wert von ATagParams, der für geschütze Seiten existieren soll, dürfte für ACT überschrieben sein, da nach dem Kopieren von NO auf ACT ATagParams = class="active" gesetzt wird. Was jedoch vond er Ausnahmebehandlung bleibt, ist der if-Abschnitt. Somit mit ATagParams nur berücksichtigt, wenn der if-Abschnitt wahr ist. D.h. es dürfte ein 'class="active"' da sein bei geschützten Seiten, und gar keine Klasse bei normalen Seiten.
Was hier vermutlich gewünscht ist, ist ein override.if... D.h. es soll ATagParams überschrieben werden mit etwas anderem, falls eine Bedingung zutrifft.
So oder so hast Du aber durch das herumkopieren noch das Problem, dass Du nirgend Deine Sonderfall-CSS-Klasse kombiniert mit "active" eingebaut hast.
Hoffe, ich konnte es halbwegs erklären...
Viele Grüße
julian
Danke für die super Erklärung, Julian.
Soweit hatte ich nicht gedacht #angry#
Das Menü war schon fertig, musste es aber nachträglich aufbohren.
Für die 1. Ebene hab ich es geschafft, hänge allerdings noch an der 2. Ebene.
temp.MENU_LINKS {
special = directory
1 = TMENU
1 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO = 1
# IFSUB = 1
# IFSUB.ATagParams.override.if {
# value=0
# isGreaterThan.field = fe_group
# }
# IFSUB.ATagParams = class="rzcolorbox-content36"
#
# IFSUB = 1
# IFSUB.wrapItemAndSub = <li class="l-1">|</li>
# #IFSUB.wrapItemAndSub = <li class="menuparent">|</li>
# ACTIFSUB < .IFSUB
NO.wrapItemAndSub = <li class="l-1">|</li>
NO.stdWrap = upper
NO.ATagTitle.field = subtitle // title
NO.stdWrap.htmlSpecialChars = 1
NO.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams = class="x rzcolorbox-content36"
ACT = 1
#ACT < .NO
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
CUR = 1
#CUR < .NO
CUR.wrapItemAndSub = <li class="l-1 current">|</li>
CUR.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams = class="current rzcolorbox-content36"
}
2 < .1
2 {
NO.wrapItemAndSub = <li class="l-2">|</li>
NO.ATagParams = class="xxxxx"
ACT = 2
ACT < .NO
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
CUR = 2
CUR < .NO
CUR.override.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams = class="current rzcolorbox-content36"
}
Hast du hier noch eine Idee?
Danke für die super Erklärung, Julian.
Soweit hatte ich nicht gedacht #angry#
Das Menü war schon fertig, musste es aber nachträglich aufbohren.
Für die 1. Ebene hab ich es geschafft, hänge allerdings noch an der 2. Ebene.
temp.MENU_LINKS {
special = directory
1 = TMENU
1 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO = 1
# IFSUB = 1
# IFSUB.ATagParams.override.if {
# value=0
# isGreaterThan.field = fe_group
# }
# IFSUB.ATagParams = class="rzcolorbox-content36"
#
# IFSUB = 1
# IFSUB.wrapItemAndSub = <li class="l-1">|</li>
# #IFSUB.wrapItemAndSub = <li class="menuparent">|</li>
# ACTIFSUB < .IFSUB
NO.wrapItemAndSub = <li class="l-1">|</li>
NO.stdWrap = upper
NO.ATagTitle.field = subtitle // title
NO.stdWrap.htmlSpecialChars = 1
NO.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams = class="x rzcolorbox-content36"
ACT = 1
#ACT < .NO
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
CUR = 1
#CUR < .NO
CUR.wrapItemAndSub = <li class="l-1 current">|</li>
CUR.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams = class="current rzcolorbox-content36"
}
2 < .1
2 {
NO.wrapItemAndSub = <li class="l-2">|</li>
NO.ATagParams = class="xxxxx"
ACT = 2
ACT < .NO
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
CUR = 2
CUR < .NO
CUR.override.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams = class="current rzcolorbox-content36"
}
Hast du hier noch eine Idee?
Bei der zweiten Ebene vermute ich auch irgendwelche übersehenen Auswirkungen der Kopie "2 < .1". Überprüf das mal, dass wirklich nur das in die 2. Ebene kommt, was da auch hin soll.
Hierfür ist der "Template Object Browser" im BE-Modul "Template" ggf.a uch hilfreich.
Was override angeht, hast Du noch paar Fehler drin:
1. CUR.override.ATagParams = class="current" dürfte nicht (wie gewollt) greifen.
2. if + override
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
Hier überschreibt (unabhängig vom if) die letzte Zeile die erste. Da fehlt das override. Also von der Bedeutung her:
- Setze den Wert
- überschreibe den Wert
- ...aber nur wenn die Bedingung gilt
Richtig müsste es sein:
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams[b].override[/b] = class=" active rzcolorbox-content36"
Danke :-)
So langsam verstehe ich die Syntax von .if.
Wäre mir aus der Doku nicht so schnell klar geworden.
Und ich verstehe die Syntax von TS und den Aufbau jetzt besser... War zu sehr davon ausgegangen, dass es sich um Code handelt und habe nicht beachtet, dass es ja nur ein Array ist.
Einen Fehler habe ich allerdings noch drin, kann mir aber keinen Reim machen wie das zusammen hängt:
1. Ebene
2. Ebene
3. Ebene
Komme ich auf die Seite, alles richtig. Die Seite ist nicht geschützt.
Klicke ich auf Ebene 1 bekommt diese anschließend die rzcolorbox-Klasse.
Diese soll aber nur dann erscheinen, wenn die Seite wirklich geschützt ist.
Das Projekt ist noch geschützt, würde also ungern die URL veröffentlichen, könnte diese dir aber mal per PN schicken wenn du dazu bereit wärst ;-).
Der Code:
temp.MENU_LINKS {
special = directory
1 = TMENU
1 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO = 1
NO.wrapItemAndSub = <li class="l-1">|</li>
NO.stdWrap = upper
NO.ATagTitle.field = subtitle // title
NO.stdWrap.htmlSpecialChars = 1
NO.ATagParams = class="L1"
NO.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams = class="rzcolorbox-content36"
ACT = 1
ACT.wrapItemAndSub = <li class="l-1 active">|</li>
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams = class=" active rzcolorbox-content36"
CUR = 1
CUR.wrapItemAndSub = <li class="l-1 current">|</li>
CUR.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams = class="current rzcolorbox-content36"
}
2 = TMENU
2 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO.wrapItemAndSub = <li class="l-2">|</li>
NO.ATagParams.override = class="xxxxx"
NO.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams.override = class="rzcolorbox-content36"
ACT = 2
ACT.wrapItemAndSub = <li class="active l-2">|</li>
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams.override = class=" active rzcolorbox-content36"
CUR = 2
CUR.wrapItemAndSub = <li class="current l-2">|</li>
CUR.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams.override = class="current rzcolorbox-content36"
}
3 = TMENU
3 {
showAccessRestrictedPages = NONE
showAccessRestrictedPages.addParams = &redirect_url=###RETURN_URL###
expAll = 0
noBlur = 1
wrap = <ul> | </ul>
NO.wrapItemAndSub = <li class="l-3">|</li>
NO.ATagParams = class="xxxxx"
NO.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams.override = class="rzcolorbox-content36"
ACT = 3
ACT.wrapItemAndSub = <li class="active l-3">|</li>
ACT.ATagParams = class="active"
ACT.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
ACT.ATagParams.override = class=" active rzcolorbox-content36"
CUR = 3
CUR.wrapItemAndSub = <li class="current l-3">|</li>
CUR.ATagParams = class="current"
CUR.ATagParams.override.if {
value=0
isGreaterThan.field = fe_group
}
CUR.ATagParams.override = class="current rzcolorbox-content36"
}
} # end menu
Vielen Dank
Okay, solved.
Wer genau liest ist klar im Vorteil. Habe override bei Ebene 1 vergessen....
Muss heißen:
NO = 1
NO.wrapItemAndSub = <li class="l-1">|</li>
NO.ATagParams = class="clean"
NO.stdWrap = upper
NO.ATagTitle.field = subtitle // title
NO.stdWrap.htmlSpecialChars = 1
NO.ATagParams = class="L1"
NO.ATagParams.if {
value=0
isGreaterThan.field = fe_group
}
NO.ATagParams.override = class="rzcolorbox-content36"
Wie markiere ich hier denn als gelöst?