Hallo zusammen #angry##angry##angry#,
ich bin schon am Verzweifeln. Ich versuche meine zweite Ebene mit unterschiedlichen CSS-Klassen zu wrappen. Habe bislang alle gefundenen Möglichkeiten erfolgslos ausprobiert. So ein Typo3-Guru bin ich nicht, muss ich damit leider nur selten arbeiten. Bitte hilft mir mit einem Hinweis, Link, Erklärung, etc... Hier der Code:
temp.menu1 = HMENU
temp.menu1 {
special = directory
special.value = 2
1 = TMENU
1 {
expAll = 1
wrap = <ul class="select">|</ul>
noBlur = 1
NO = 1
NO {
#allWrap.insertData = 1
#allWrap = <li class="line{field:uid}">|<!--<![endif]-->
wrapItemAndSub.insertData = 1
wrapItemAndSub = <li class="line{field:uid}">| </li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
stdWrap.wrap = |<!--[if IE 7]><!-->
}
ACT = 1
ACT < .NO
}
2 = TMENU
2 {
expAll =1
noBlur = 1
#wrap.insertData = 1
#wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{register:mainMenuNumber}">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
#wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub1">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> || <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub2">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> || <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub3">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
#allWrap.insertData = 1
#wrap.dataWrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{register:count_HMENU_MENUOBJ}">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
#allWrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{register:count_HMENU_MENUOBJ}">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
#wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{$temp.menu2.int}+1">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> |*| <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub2">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> |*| <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub3">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
#wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{elementUid}">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
NO = 1
NO {
before.cObject=LOAD_REGISTER
before.cObject{
mainMenuNumber.cObject=TEXT
mainMenuNumber.cObject{
value={register:mainMenuNumber}+1
insertData=1
}
mainMenuNumber.prioriCalc=intval
}
#wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub1">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> || <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub2">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--> || <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub3">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
wrapItemAndSub = <li class="subline">| </li>
stdWrap.wrap = <span><b>|</b></span><!--[if gte IE 7]><!-->
}
ACT = 1
ACT <.NO
wrap.insertData = 1
wrap = <!--<![endif]--> <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{register:mainMenuNumber}">|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
}
3 = TMENU
3{
expAll = 1
wrap = <!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
noBlur = 1
NO = 1
NO{
wrapItemAndSub = <li>|</li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
}
}
Das was ich eigentlich will, die zweite Ebene zu wrappen, wobei bei jeder Iteration(es gibt 3) meine CSS Klasse für den tag <ul> unterschiedlich auszugeben, z.B: <ul class="sub1">, <ul class="sub2">, <ul class="sub3">
2 = TMENU
2 {
expAll =1
noBlur = 1
wrap = <ul class="sub">|</ul>
NO = 1
...
}
Egal welche Möglichkeit ich versucht habe, siehe oben auskommentiert, hat es leider nicht geklappt. Es muss nicht unbedingt eine Zahl sein, ich brauche einfach 3 unterschiedliche CSS-Klassen, die natürlich auf jeder Webseite gleich ausgegeben werden. Wie mache ich denn das? #angry##angry##angry#
Ich weiß, dass man hier sich sehr gut auskennt, please HELP
THX, Marius
Du musst halt in die TSRef schauen, um zu sehen, welche wraps stdWrap-Funktionen wie insertData unterstützen.
Für TMENU-Items sind das: allWrap, after, allStdWrap, before
Danke dir igorshmigor für die Aufmerksamkeit,
mein Problem ist, dass ich die komplette Menü-Ebene wrappen will, also vor den Menüzuständen, und dafür habe ich ja meiner Meinung nach nur wrap.
In den Menüzuständen geht das, habe ich schon bei der ersten Ebene eingesetzt.
Warum geht das nicht mal mit optionSplit ?
2 = TMENU
2 {
expAll =1
noBlur = 1
wrap = <ul class="sub1">|</ul> || <ul class="sub2">|</ul> ||<ul class="sub3">|</ul>
NO = 1
...
}
Danke dir trotzdem sehr
Ja, das geht leider nicht. Stattdessen könntest du mit LOAD_REGISTER arbeiten, um einen eigenen Counter zu erstellen. Das im Detail zu erklären wäre mir jetzt zu aufwändig, aber vielleicht findest du was, wenn du nach TMENU LOAD_REGISTER counter bzw. zähler suchst.
Danke dir sehr für deine Zeit,
dann werde ich versuchen.
Vielleicht hat jemand eine Doku wie man mit dem LOAD_REGISTER umgeht oder sogar eine andere Möglichkeit, ich würde euch sehr dankbar sein.
LG, Marius
Hm, was willst du eigentlich wirklich erreichen? Das hier:
2 = TMENU
2 {
expAll =1
noBlur = 1
wrap = <ul class="sub1">|</ul> || <ul class="sub2">|</ul> ||<ul class="sub3">|</ul>
NO = 1
...
}
geht nicht, weil es Unsinn ist. Das ist die zweite Menü-Ebene (wegen der 2 ...) und die hat natürlich nur ein ul. Deshalb kann option-split nicht gehen. Es gibt nur eine Iteration.
Wenn du jede Menüebene mit einer anderen Klasse versehen wilsst, geht das eigentlich ganz simpel:
1 = TMENU
1 {
expAll =1
noBlur = 1
wrap = <ul class="main">|</ul>
NO = 1
...
2 < .1
2.wrap = <ul class="sub1">|</ul>
3 < .1
3.wrap = <ul class= "sub2"|</ul>
}
Das sollte so ein Menü ergeben:
<ul class="main">
<li>ösadkfökal
<ul class="sub1">
<li>ösalkfdjökla
<ul class="sub2">
<li>slkdfgjö</li>
</ul></li>
</ul></li>
</ul>
Habe ich dich richtig verstanden?
Abgesehen davon ist das in der Regel nicht erforderlich. Man kann die einzelnen Ebenen in CSS so ansprechen:
ul.main {}
ul.main ul {}
ul.main ul ul {}
reicht meist aus, weil sich die meisten Einstellungen eh vererben.
Gruß
Peter
Lisardo Multimedia
Ich hatte das so verstanden:
<ul class="select">
<li class="line54">ösadkfökal
<ul class="sub1">
<li>ösalkfdjökla</li>
<li>hwehwrh</li>
</ul>
</li>
<li class="line68">jlkhjweh
<ul class="sub2">
<li>hwaehweh</li>
<li>jölhzerwoize</li>
</ul>
</li>
</ul>
OK, das ist natürlich komplizierter; man müsste hier einen zweiten Counter einführen. Aber ich würde einfach einen anderen Ansatz verfolgen: es muss ja nicht eine Klasse in der Ebene zwei sein, es reicht ja eine Klasse im übergeordneten <li>-Tag. Also so:
<ul class="select">
<li class="line54 iteration1">ösadkfökal
<ul>
<li>ösalkfdjökla</li>
<li>hwehwrh</li>
</ul>
</li>
<li class="line68 iteration2">jlkhjweh
<ul>
<li>hwaehweh</li>
<li>jölhzerwoize</li>
</ul>
</li>
</ul>
Und das geht ja einfach über option-split:
1 = TMENU
1 {
expAll =1
noBlur = 1
wrap = <ul class="main">|</ul>
NO = 1
...
wrapItemAndSub = <li class="line{field:uid} iteration1">| </li> || <li class="line{field:uid} iteration2">| </li>
}
Das Styling sieht dann so aus:
li.iteration1 ul {}
li.iteration2 ul {}
Gruß
Peter
Lisardo Multimedia
😃 Danke sehr @igorshmigor, @lisardo für Eure Zeit und Eure Hinweise!
Nach langem Herumblödeln mit LOAD_REGISTER (leider habe ich zu nichts gebracht) habe ich doch aufgegeben. Ich habe noch keine Doku oder Ähnliches gefunden, womit auch die Anfänger etwas anfangen können. Vielleicht liegt das an meiner Suche.
Die Frage ist weiterhin, wie man mit Variablen und Variablenwerten in TS handeln kann, ich würde Euch noch sehr dankbar für ein paar Hinweise.
Mein Problem habe ich teils mit der Eigenschaft 'after' auf der ersten Ebene und teils mit der normalen 'wrap' auf der zweiten Ebene.
Danke dir @igorshmigor dafür, ich war fast am Allesumdenken.
temp.menu1 = HMENU
temp.menu1 {
special = directory
special.value = 2
1 = TMENU
1 {
expAll = 1
wrap = <ul class="select">|</ul>
noBlur = 1
NO = 1
NO {
wrapItemAndSub.insertData = 1
wrapItemAndSub = <li class="line{field:uid}">| </li><!--<![endif]-->
after.insertData = 1
after = <!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{field:uid}">
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
stdWrap.wrap = |<!--[if IE 7]><!-->
}
ACT = 1
ACT < .NO
}
2 = TMENU
2 {
expAll =1
noBlur = 1
wrap = |</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
NO = 1
NO {
wrapItemAndSub = <li class="subline">| </li>
stdWrap.wrap = <span><b>|</b></span><!--[if gte IE 7]><!-->
}
ACT = 1
ACT <.NO
}
3 = TMENU
3{
expAll = 1
wrap = <!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>|</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
noBlur = 1
NO = 1
NO{
wrapItemAndSub = <li>|</li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
}
}
Wirklich hilfsreich dieses Forum und die Benutzer sind sehr entgegenkommend, THX
Aber lisardo hat doch recht.
Warum löst du es nicht über CSS? Wenn die uid schon in die übergeordnete <li> eingetragen ist, dann kannst du doch mit
li.line1 ul {}
arbeiten, statt mit
ul.sub1 {}
Das kommt doch aufs gleiche raus. Dann musst du nicht umständlich noch die uid oder einen Zähler in die untergeordnete <ul> schreiben.
:o so geht es in meinem Fall leider nicht, also nicht in allen Browsern, frag mich bitte nicht warum 🙂, habe schon versucht.
Bring mal ein Beispiel, das glaube ich nämlich nicht. Die meisten Menüs kommen praktisch ohne jede zusätzliche Klasse aus, da reicht meist ein Schachteln von ul.
ul {}
ul ul {}
ul ul ul {}
Das verstehen alle Browser, sogar der presthafte IE 6. M. W. sogar IE 4 ...
Gruß
Hi lisardo,
jetzt ist mir zu umständlich so ein Beispiel zu posten, werde aber den Link zu der Website posten, wenn ich sie fertig habe.
Dann kannst du es über Firebug analysieren, wenn Interesse.
Im Allgemeinen habe ich mich für die Menüs von Stu Nicholls entschieden, sind recht komplexe CSS-Menüs, die in allen Browsern gleich aussehen, und wenn man zwischen 1-20€ dafür überweist, kann man sie auch kommerziell einsetzten.
z.B. http://www.cssplay.co.uk/menus/pro_line_down_fly_v2.html
Danke für deine Zeit
ist zwar schon etwas älter, aber ich greif das thema noch mal auf weil es mich gerade auch beschäftigto.O
es geht um dieses menü.. Es verlangt eben im Submenu diese <ul class> Konstruktion, die dann mit JS angesprochen wird.
Das gleiche Thema wurde hier auch schon gepostet. Die Lösung hier ist, das CSS in das Feld Beschreibung der jeweiligen Seite zu schreiben und mit
stdWrap.dataWrap = <ul class="sub{field:abstract}">|</ul>
die <ul> zu wrappen. Bei mir funktioniert die Lösung leider nicht... viell. hat ja jemand in der zwischenzeit eine Alternativlösung gefunden?
Da Crosspost hier der Link zum anderen Forum
Gruß
Patrizius
Die Antwort heisst submenuObjSuffixes. damit ist es möglich, im Submenu Objekten unterschiedliche Klasssen zuzuweisen.