Guten Abend, allerseits
ich möchte ein Menü mit zwei ineinander verschachtelten ULs herstellen, wobei die LI der ersten Ebene und die UL der zweiten Ebene jeweils eindeutige IDs brauchen
MAIN_MENU = HMENU
MAIN_MENU {
special = directory
special.value = 3
expAll = 1
1 = TMENU
1 {
expAll = 1
wrap = <ul class="firstLevelMenu">|</ul>
NO = 1
NO {
linkWrap = <div class="firstLevelMenuItemDiv">|</div>
before {
dataWrap = <li id="menu-{field:uid}" class="firstLevelMenuItem" onmouseover="openPrimarySubMenu(" menu-field:uid="">|
}
wrapItemAndSub = |</li>
}
}
2 = TMENU
2 {
wrap = <ul id="sub-menu-XXX" class="secondLevelMenu menuClosed" style="display: block"> |</ul>
NO = 2
NO {
wrapItemAndSub = <li>|</li>
}
}
Okay, meine erste Menü-Ebene holt sich brav ihre ID. Fein.
In der zweiten Ebene würde ich dafür *morden*, anstelle des XXX irgendeine ID zu haben. Die PID wäre ganz klasse, aber ich bin mittlerweile nicht mehr wählerisch...
Wenn ich auch hier mir einem before arbeite, wird der öffnende UL-Tag nicht gerendert.
wrap = <ul id="sub-menu-{field:uid}" class="secondLevelMenu menuClosed" style="display: none"> |</ul>
wrap.insertData = 1
Was mache ich falsch? Was übersehe ich?
Hat sich erledigt...
Ich war so darauf versessen, das tatsächlich in der zweiten Menüebene hinzubekommen, dass ich nicht offen war für kreativere Ansätze...
MAIN_MENU = HMENU
MAIN_MENU {
special = directory
special.value = 3
expAll = 1
1 = TMENU
1 {
expAll = 1
wrap = <ul class='firstLevelMenu'>|</ul>
NO = 1
NO {
after {
dataWrap = |</div><ul id='sub-menu-{field:uid}' class='secondLevelMenu menuClosed' style='display: none' >
}
linkWrap = <div class='firstLevelMenuItemDiv'>|
before {
dataWrap = <li id='menu-{field:uid}' class='firstLevelMenuItem' onMouseOver='openPrimarySubMenu("menu-{field:uid}");' >|
}
wrapItemAndSub = |</li>
}
}
2 = TMENU
2 {
wrap = |</ul>
NO = 2
NO {
wrapItemAndSub = <li>|</li>
}
}
}
Wie man sieht, habe ich in Z. 12-15 den linkWrap der ersten Ebene so aufgebohrt, dass sie den öffnenden UL der zweiten Ebene erzeugt, samt UID *freu*
In Z. 25 bekommt der wrap dann natürlich keinen öffnenden UL mehr.
Das ist natürlich nicht ganz koscher.
Aber ich meine mich zu erinnern, dass es einen Status namens "nur wenns unterebenen gibt" gibt.
Vielleicht wird die Sache robuster, wenn ich unterscheide zwischen Einträgen, die Untereinträge haben (und dann diesen Hack mitbekommen), und solchen, die keine Untereinträge haben.
P.S.: Ich setze diesen Thread bewusst nicht auf "gelöst", weil mein Hack eigentlich nicht die Lösung des Problems ist. Und an der wäre ich immer noch interessiert :-)
Bäh...
Da sage ich dirty...
Also wenns Unterebenen gibt ist schonmal IFSUB (Menüzustand ACTIFSUB,CURIFSUB usw)
page:uid geht nur im dataWrap, stimmt. Nimm aber TYPO3 4.2, dann gehts auch im wrapItemAndSub.
Im wrap der zweiten Ebene (der ul-wrap) gehts dann auch nicht mit page:uid, weil du da ja wieder kein dataWrap nimmst.
Editiert:
Okay, mir ist gerade klargeworden, dass sich dieser Post wahrscheinlich etwas kratzbürstiger liest, als er gemeint war.
Dafür entschuldige ich mich, und danke Dir dafür, dass Du Dir die Zeit genommen hast zu antworten. Vielleicht waren auch meine ersten beiden Posts nicht so klar formuliert, wie ich dachte...
SLAng schrieb
Bäh...
Da sage ich dirty...
Volle Zustimmung. In meinem zweiten Post habe ich ja geschrieben, dass ich das für nicht koscher halte und daher weiter um eine Lösung bitte.
SLAng schrieb
Also wenns Unterebenen gibt ist schonmal IFSUB (Menüzustand ACTIFSUB,CURIFSUB usw)
Danke, das kommt garantiert in die nächste Version
SLAng schrieb
page:uid geht nur im dataWrap, stimmt. Nimm aber TYPO3 4.2, dann gehts auch im wrapItemAndSub.
Im ersten Post, zweites Codeschnipsel hatte ich angegeben, dass ich das in der zweiten Ebene probiert hatte, dass dann aber das öffnende UL nicht gerendert wird. DAS war genau mein Problem. wrapItemAndSub geht auch nicht.
SLAng schrieb
Im wrap der zweiten Ebene (der ul-wrap) gehts dann auch nicht mit page:uid, weil du da ja wieder kein dataWrap nimmst.
Nein, im zweiten Post benutze ich kein dataWrap, sondern die quick and dirty-Version, weil das mit dem wrap in der zweiten Ebene wie gesagt nicht funktioniert...
Wenn Du einen Hinweis hättest, warum mein wrap in der zweiten Ebene nicht funktioniert, würde Dir mein Dank ewig nachschleichen.
Bisher hast Du aber nur ganz eloquent mein Problem noch einmal auf den Punkt gebracht :-)
Liebe Grüße
dannyK
Auf nachschleichenden Dank da steh ich total drauf und bereite mich jetzt schonmal darauf vor... #giggle#
Also probiers doch mal statt wrap oder dataWrap im ul mal mit stdWrap.dataWrap, dann klappts auch mit dem page oder field:uid.
Aaahh da schleicht er... :o