Hallo liebe Lesenden,
ich habe folgende Hürde zu nehmen: in einem Menü werden der jeweils erste und letzte Eintrag anders formatiert als die anderen. Das ist über optionsplit ja auch kein Problem. Das Problem ergibt sich erst, wenn sich nur ein Element in dem entsprechenden Menü (Ebene 2) befindet, denn dann wird der Stil des letzen Elements verwendet. Ich brauche aber den Stil des ersten.
Für die ATagParams funktioniert das wunderbar.
2.NO.ATagParams.cObject = COA
2.NO.ATagParams.cObject {
10 = TEXT
10.value = class="second-level first-item"
10.if.equals = 1
10.if.value.data = register:count_menuItems
20 = TEXT
20.value = class="second-level first-item" |*| class="second-level" |*| class="second-level last-item"
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
}
Jetzt dachte ich, dass es für wrapItemAndSub ja auch so funktionieren müsste, aber Pustekuchen. Das einzelne Element wird beharrlich mit last-item versehen.
2.NO.wrapItemAndSub.cObject = COA
2.NO.wrapItemAndSub.cObject {
10 = TEXT
10.value = <li class="second-level first-item">|</li>
10.if.equals = 1
10.if.value.data = register:count_menuItems
20 = TEXT
20.value = <li class="second-level first-item">|</li> |*| <li class="second-level">|</li> |*| <li class="second-level last-item">|</li>
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
}
Seht ihr irgendetwas, das ich übersehen hab? Oder mach ich hier was falsch? Für Tips und Ansätze bin ich sehr dankbar.
Stefan
Mmm, das ist schwierig, da wirst du dir irgendeinen Trick überlegen müssen. Tatsächlich ist ja ein Element gleichzeitig erstes und letztes, wobei TYPO3 da immer den "last-Split" verwendet. D.h. das ist das normale Verhalten von TYPO3.
Zumal man ja davon ausgehen würde, dass wenn es bei ATagParams funktioniert, es auch bei wrapItemAndSub geht. Mir ist als ob die Bedingungen nicht greifen, aber ich weiß halt leider nicht, wie ich jetzt vorgehen soll...
Stefan
OK, ich hab für mich eine Lösung gefunden. Es könnte sein, dass die nicht für alle passt, aber sofern ihr allWrap nicht braucht, hier mein Ansatz:
2.NO.allWrap.cObject = COA
2.NO.allWrap.cObject {
10 = TEXT
10.value = <li class="second-level first-item">|
10.if.equals = 1
10.if.value.data = register:count_menuItems
20 = TEXT
20.value = <li class="second-level first-item">|</li> |*| <li class="second-level">|</li> |*| <li class="second-level last-item">|</li>
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
}
2.NO.wrapItemAndSub = |</li>
Ich hab es absolut nicht hin bekommen im wrapItemAndSub das Optionsplit zu überlisten. Deswegen benutze ich das nur um das LI-Element hinter dem Submenü wieder zu schließen. Beim allWrap hat das super funktioniert, deswegen jetzt diese Variante...
So, Schlafenszeit 🙂
Müde Grüße
Stefan
Ola,
der Vollständigkeit halber: beim Basteln und Testen war mir aufgefallen, dass der IE8 Probleme mit dem Menü hatte. Grund dafür war eine leicht verquere Positionierung der li-Tags. Ich hab dann einfach mal versucht wie sich allWrap wirklich verhält. Irgendwo gab es eine Grafik die sagte, dass allWrap ein Untermenü nicht mit einschließt. Das scheint aber nicht der Fall zu sein. Der Code der bei mir jetzt funktioniert ist:
2.NO.allWrap.cObject = COA
2.NO.allWrap.cObject {
10 = TEXT
10.value = <li class="second-level first-item">|</li>
10.if.equals = 1
10.if.value.data = register:count_menuItems
20 = TEXT
20.value = <li class="second-level first-item">|</li> |*| <li class="second-level">|</li> |*| <li class="second-level last-item">|</li>
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
}
2.NO.wrapItemAndSub = |
Effektiv haben sich die Zeilen 4 und 14 geändert.
Ich hoffe es hilft jemandem 🙂
Stefan