Zum Inhalt springen

Listenmenü zu kompliziert?

Erstellt am 9. Januar 2008 · 5 Antworten · letzte Antwort am 10. Januar 2008

Tags: Frage

SLAng ·

Hallo...
Es handelt sich hierbei nicht um ein Problem, sondern einfach um die Frage, ob folgendes Menü, das korrekt funktioniert vielleicht zu kompliziert aufgebaut ist.

Gemeint ist folgendes:
Ein verschachteltes Listenmenü muss folgendermaßen aussehen:

<ul>
        <li>Menüpunkt 1</li>
        <li>Menüpunkt 2</li>
        <li>Menüpunkt 3
                <ul>
                        <li>Unterpunkt 1</li>
                        <li>Unterpunkt 2</li>
                </ul>
        </li>
        <li>Menüpunkt 4</li>
        <li>Menüpunkt 5</li>
        <li>Menüpunkt 6</li>
</ul>

Also nach dem Motto: Wer ul sagt muss auch li sagen. ;-)

Hauptaugenmerk liegt auf der Tatsache, dass das li von Menüpunkt 3 nicht beendet wird, da nun ein eingeschobenes ul folgt. Erst nachdem dies geschlossen ist muss das li von Menüpunkt 3 geschlossen werden.

Nun habe ich dieses Menü im TS folgendermaßen gelöst.

temp {
	MENU = COA
	MENU {
		10 = IMAGE
		10 {
			file = fileadmin/index/pic/menue.gif
			wrap = |
			params = style="vertical-align:top;" title=""
			altText = Menü
		}

		20 = HMENU
		20 {
			wrap = <ul class="navFirstline">|</ul>
			excludeUidList = 562

			1 = TMENU
			1 {
				wrap = |
				NO {
					RO = 1
					allWrap = <li class="First_NO">|</li>
					ATagParams = class="First_NO"
					after {
						cObject = TEXT
						cObject {
							if.isPositive.dataWrap = {field:newUntil}-{date:U}
							value = NEU
							wrap = <sup>|</sup>
						}
					}
				}
				ACT < .NO
				ACT {
					allWrap = <li class="First_ACT">|</li>
					ATagParams = class="First_ACT"
					after < .after
				}
				ACT = 1
				ACTIFSUB < .ACT
				ACTIFSUB {
					allWrap = <li class="First_ACT">|
					ATagParams = class="First_ACTIFSUB"
				}
				ACTIFSUB = 1
			}

			2 = TMENU
			2 {
				wrap = <ul class="navSecondline">|</ul></li>
				NO {
					allWrap = <li class="Second_NO">|</li>
					ATagParams = class="Second_NO"
					after {
						cObject  = TEXT
						cObject {
							if.isPositive.dataWrap = {field:newUntil}-{date:U}
							value = NEU
							wrap = <sup>|</sup>
						}
					}
				}
				IFSUB < .NO
				IFSUB {
					ATagParams = class="Second_IFSUB"
				}
				IFSUB = 1
				ACT < .NO
				ACT {
					allWrap = <li class="Second_ACT">|</li>
					ATagParams = class="Second_ACT"
				}
				ACT = 1
				ACTIFSUB < .ACT
				ACTIFSUB {
					ATagParams = class="Second_ACTIFSUB"
				}
				ACTIFSUB = 1
			}
		}

		30 < .10
		30 = IMAGE
		30 {
			file = fileadmin/index/pic/ende2.gif
			altText =
		}
	}
}

Das funktioniert wie gewollt.

Ich bin mir nun nicht so sicher, ob ich das etwas kompliziert gelöst habe.
Man schaue nach Zeile 42 im Zustand ACTIFSUB. Dort fehlt im allWrap das schließende </li> und wird stattdessen in Zeile 50 im wrap der 2. Menüebene wieder hinzugefügt.

Also wie gesagt. Die Ausgabe ist korrekt. Doch Frage ist, oder ob das auch einfacher geht, ob das eine normale Vorgehensweise ist.