Zum Inhalt springen

Das perfekte Menu mit Ergänzung in Typoscript

Erstellt am 28. Oktober 2010 · 2 Antworten · letzte Antwort am 29. Oktober 2010

Tags: Frage

waal ·

Hallo,

ich versuche dieses Menu in Typo3 zu bauen: http://www.drweb.de/plus/designideen/menu-05/ausklappmenu-h.php5

Das ist mir auch gelungen nur habe ich nun vor ein kleine Ergänzung vorzunehmen. Dazu soll ab der zweiten Ebene vor dem ersten Menupunkt und nach dem letzten HTML ausgegeben werde. Auch dies funktioniert mit einem Option Split:
<ul><li> HTMLvorne |</li> |*| <li>|</li> |*| <li>| HTMLdanach</li></ul>

Dies geht solange gut, wie es immer mindestens 2 Menupunkte gibt. Gibt es nur einen wird, wie beim Option Spilt üblich leider nur der Code für den letzten Menupunkt ausgeführt. Es steht dort also:

<li>| HTMLdanach</li></ul>

Was ich aber brauche ist:

<ul><li> HTMLvorne| HTMLdanach</li></ul>

Habe nun hier:
#93455 entdeckt wie man Menupunkte zählen "kann".

2 = TMENU
2 {
expAll = 1
noBlur = 1

NO {

doNotShowLink = 1

before.cObject = TEXT
before.cObject.field = uid
before.cObject.dataWrap = <a href="index.php?id=|" accesskey ="{field:tx_govaccessibility_accesskey}" title="{field:title}:{field:subtitle} - Accesskey:{field:tx_govaccessibility_accesskey}">

after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.htmlSpecialChars = 1
after.cObject.wrap = |</a>


wrapItemAndSub.cObject = COA
wrapItemAndSub.cObject {
10 = TEXT
10.value = <ul><li>HTMLvorne|HTMLdanach</li></ul>
10.if.equals = 1
10.if.value.data = register:count_menuItems

20 = TEXT
20.value = <ul><li>HTMLvorne|</li> |*| <li>|</li> |*| <li>|HTMLdanach</li></ul>
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
}

Das klappt für die zweite Ebene auch super, allerdings werden keine Untermenüs mehr angezeigt, weder durch Vererbung mit 3 < .2 4 < .2 noch durch Definition analog oben:

3 = TMENU ...

Kann mir bitte jemand helfen und sagen, ob man das Problem so lösen kann oder einen anderen Ansatz (wenn ja bitte welchen) verwenden muss.

Danke und Gruß Alex

waal ·

Erstmal Danke! Das war das Problem. Habe aber leider noch eins.

Das Menu arbeitet absolut korrekt bis zur 2. Ebene. Typoscriptausschnitt:
2 = TMENU
2 {
wrap = <ul>|</ul>
expAll = 1
NO{
wrapItemAndSub.cObject = COA
wrapItemAndSub.cObject {
10 = TEXT
10.value = <li>Einfach|</li>
10.if.equals = 1
10.if.value.data = register:count_menuItems

20 = TEXT
20.value = <li>Er|</li> |*| <li>Mi|</li> |*| <li>|Le</li>
20.if.equals = 1
20.if.negate = 1
20.if.value.data = register:count_menuItems
} #wrapItemAndSub.cObjectENDE
} # NO Ende
} #2 Ende

Insgesamt brauche ich aber 4 Ebenen und ab der dritten gibt es Problem, die sogar auf die 2. zurückschlagen.
Bekommt ein Menupunkt 5 z.B. zwei Unterpunkte so wird korrekte ausgegeben:

<ul>
<li><h2><a href="index.php?id=5" accesskey="" title="5: - Accesskey:">5</a></h2>
<ul>
<li>Er<a href="index.php?id=6" onfocus="blurLink(this);">6</a></li>
<li><a href="index.php?id=8" onfocus="blurLink(this);">8</a>Le</li>
</ul>
</li>
</ul>

Fügt man nach obigen Typoscriptschnipsel die Vererbung 3 < .2 ein und hat die Seite 8 einen Unterpunkt so erhält man folgendes HTML:

<ul>
<li><h2><a href="index.php?id=5" accesskey="" title="5: - Accesskey:">5</a></h2>

<ul>
<li>Er<a href="index.php?id=6" onfocus="blurLink(this);">6</a></li>
<li>Einfach<a href="index.php?id=8" onfocus="blurLink(this);">8</a>

<ul>
<li>Einfach<a href="index.php?id=9" onfocus="blurLink(this);">9</a></li>
</ul>
</li>
</ul>
</li>
</ul>

Warum kommt das erste Einfach statt Le als letztes Element der 2. ebene und wie bekommt man das Problem gelöst?

Danke für die Hilfe!!!