Einen schönen Tag,
folgende Situation:
Eine Seitenstruktur mit momentan 2 Ebenen. Entsprechende Menüs für Unterseiten sind kein Problem. ABER: Mein Versuch für zwei meiner Seite ein Menü aus Ankern auf die Eigene Seite scheitern behaarlich.
Das Ankermenü allein funktioniert aber eben nicht in Kombination! #angry#
Den Knackpunkt sind die letzten paar Zeilen mit der Bedingung.
Unterscheiden tun sich die Beiden Menüs "menuZweiteEbene" und "menuZweiteEbeneAnker" nur durch die beiden Zeilen
"
sectionIndex = true
sectionIndex = header
". Doch mein Versuch nur die beiden Zeilen durch eine Bedingung für die beiden Seiten zu aktivieren ist ebenfalls gescheitert.
Kann das PlugIn "realURL" da vieleicht mit zwischenfunkten? Die Seiten-IDs bleiben doch aber geleich! #paralyzed#
menuZweiteEbene = TMENU
menuZweiteEbene {
wrap = <ul class="ZweiteEbene">|</ul>
NO = 1
NO.stdWrap2.wrap = <li class="nav_subelem"> | </li>
CUR = 1
CUR < .NO
CUR.ATagParams = class="activ"
CUR.stdWrap.wrap = |
ACT = 1
ACT = .CUR
}
menuZweiteEbeneAnker = TMENU
menuZweiteEbeneAnker {
wrap = <ul class="ZweiteEbene">|</ul>
sectionIndex = true
sectionIndex = header
NO = 1
NO.stdWrap2.wrap = <li class="nav_subelem_anker"> | </li>
CUR = 1
CUR < .NO
CUR.ATagParams = class="activ"
CUR.stdWrap.wrap = |
ACT = 1
ACT = .CUR
}
hauptmenu = COA
hauptmenu {
wrap = <ul> | </ul>
entryLevel = 0
5 < startseiteneintrag
# Seitenbaum
10 = HMENU
10 {
entryLevel = 0
# erste Ebene
1 < menuErsteEbene
# zweite Ebene
2 < menuZweiteEbene
#[PIDinRootline = 18]
[globalVar = TSFE:id=18, TSFE:id=19]
2 < menuZweiteEbeneAnker
[end]
}
}
Any hints?
Hallo terrierace,
ich hatte das selbe Problem und konnte es mit der Hilfe von kompetenten Typo3 IRC-lern relativ schnell lösen!
Mit dem Section-Index hatte ich gar keinen Erfolg, daher habe ich folgendes Snippet verwendet:
(Quelle)
# TS Code
temp.anchorMenu = CONTENT
temp.anchorMenu {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos=0
languageField=sys_language_uid
}
wrap = <ul>|</ul>
renderObj = TEXT
renderObj {
field = header
dataWrap= <li><a href="#c{field:uid}">|</a> </li>
}
}
Angepasst und richtig eingefügt sieht das ganze in meinem Beispiel dann so aus:
## navSub [Begin]
lib.navSub = COA
lib.navSub.10 = HMENU
lib.navSub.10.entryLevel = 1
lib.navSub.10.wrap = <ul>|</ul>
lib.navSub.10.1 = TMENU
lib.navSub.10.1.NO = 1
lib.navSub.10.1.NO {
allWrap = <li>|</li>
}
lib.navSub.10.1.ACT = 1
lib.navSub.10.1.ACT {
allWrap = <li>|</li>
}
temp.navSubAnchors = CONTENT
temp.navSubAnchors {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos=0
languageField=sys_language_uid
}
wrap = <ul>|</ul>
renderObj = TEXT
renderObj {
field = header
dataWrap= <li><a href="#c{field:uid}">|</a> </li>
}
}
lib.navSub.10.1.ACT.after.cObject < temp.navSubAnchors
## navSub [End]
Das ganze gibt dann folgendes Menü aus:
> Seite 1
> Seite 2 (ACT)
>> Anker 1 von Seite 2
>> Anker 2 von Seite 2
>> ...
> Seite 3
> ...
Grüße, -dc
www.domaintechnik.at
@shado vielen dank für den Lösungsansatz
Ich hab das Problem Montag dann doch endlich selbst gelöst.
Man muss die Bedingung:
#[PIDinRootline = 18]
[globalVar = TSFE:id=18, TSFE:id=19]
2 < menuZweiteEbeneAnker
[end]
außerhalb jeglicher Objektdefinition (in meinem fall von "hauptmenu") machen! #giggle#
Meine Lösung:
menuZweiteEbeneAnker = TMENU
menuZweiteEbeneAnker {
wrap = <ul class="ZweiteEbene">|</ul>
sectionIndex = true
NO = 1
NO.stdWrap2.wrap = <li class="nav_subelem_anker"> | </li>
CUR = 1
CUR < .NO
CUR.ATagParams = class="activ"
CUR.stdWrap.wrap = |
ACT = 1
ACT = .CUR
}
hauptmenu = COA
hauptmenu {
wrap = <ul> | </ul>
entryLevel = 0
5 < startseiteneintrag
# Seitenbaum
10 = HMENU
10 {
entryLevel = 0
# erste Ebene
1 < menuErsteEbene
# zweite Ebene
2 < menuZweiteEbene
}
}
[globalVar = TSFE:id = 18, TSFE:id = 19]
hauptmenu.10.2 < menuZweiteEbeneAnker
[global]
Entscheidend ist die Verlegung der letzten 3 Zeilen aus der Objektdefinition heraus. #angry#
Kann man leider nirgendwo nachlesen. Also hab ich ein Untermenü mit Ankern und eins ohne definiert und dann die Bedingung gesetzt wann das Untermenü durch das Ankermenü ersetzt werden soll.
Trotzdem nochmal vielen Dank für deine Lösung.
terrierace schrieb
Kann man leider nirgendwo nachlesen.
Das stimmt nicht ganz, es ist hier beschrieben: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Syntax/Index.html weiter unten unter der Überschrift "Where to insert conditions in TypoScript?"
Gut dokummentiert und übersichtlich zusammengefasst ist die TypoScript Syntax auch in der TypoScript kurz & gut Referenz von O'Reilly. Sehr empfehlenswert!
@igorshmigor danke für den Hinweis auf die Bücher.
Leider scheint sich keiner so wirklich dieser Problematik bewusst zu sein, da weder hier noch in anderen Foren das als Fehlerquelle erkannt wurde.
Allen interessierten Mitlesern trotzdem danke und viel Spass beim basteln. 😃
terrierace schrieb
Leider scheint sich keiner so wirklich dieser Problematik bewusst zu sein, [...]
Das würde ich so nicht sagen. Gib mal "conditions klammern" als Suchbegriff in diesem Forum ein. Es wurde schon in vielen Threads darauf hingewiesen.
Tja, jetzt wo ich weiss das es an den Klammern lag kann ich natürlich auch die richtigen Suchbegriffe eingeben.
Hinterher ist man immer schlauer #giggle#
Hät ja auch sein können, dass mein eigentlicher Ansatz schon von der Logik her falsch war.
Meine Äußerung hat sich lediglich auf das Erkennen des Zusammenhangs zwischen meinem Code-Problem und dem Thema "conditions klammern" bezogen und dieses Erkennen hat nun mal weder hier im Forum noch in anderen funktioniert.
Ich danke jedenfalls allen die sich bemüht haben und die Lösung ist ja auch gefunden.
Was will man mehr!?