Zum Inhalt springen

Verschachteltes Menü in TS umsetzen

Erstellt am 15. November 2013 · 4 Antworten · letzte Antwort am 16. November 2013

Tags: HTML & CSS, TYPO3 6, Frage

mille_85 ·

Hallo,
ich bin zimelich neu in Sachen TypoScript.
Einfache Menüs habe ich schon umgesetzt, allerdings habe ich nun folgendes Problem.
Für eine Freundin habe ich ein Layout entworfen, in dem die Navigation schräg verlaufen soll, da sie sich dann besser ins Layout eingliedert. Ob das sinnvoll ist oder nicht sei mal dahin gestellt 🙂

Was genau ich damit meine seht ihr im Anhang...

Meine HTML und CSS-Dateien sieht wie folgt aus:

	<div>
		<ul>
			<div class="navi_indent"><li><a href="Startseite.html">Startseite</a></li>
				<div class="navi_indent"><li><a href="Über uns.html">Über uns</a></li>
					<div class="navi_indent"><li><a href="Kontakt.html">Kontakt</a></li>
						<div class="navi_indent"><li><a href="Preise.html">Preise</a></li>
							<div class="navi_indent"><li><a href="Impressum.html">Impressum</a></li></div>
						</div>
					</div>
				</div>
			</div>
		</ul>
	</div>
[code][/code]
/* CSS Document */
html, body {
	margin: 0px;
	padding: 0px;
}

.navi_indent {
	list-style-type: none;
	position: relativ;
	left:10px;
}

div {
	position: relative;
}

Menue.jpg

mille_85 ·

Oje, wollte noch gar nicht abschicken.
Meine Frage nun wie setzte ich das in TS um?
Mein Problem sind die verschachtelten DIV-Elemente...

etux · · Beste Antwort

Einfach, aber ziemlich Käse:

lib.schraegesMenue = HMENU
lib.schraegesMenue {
  1 = TMENU
  1 {
    wrap = <ul>|</ul>
    NO {
      allWrap = <li style="padding-left: {register:count_HMENU_MENUOBJ}em;">|</li>
      allWrap.insertData = 1
    }
  }
}

Besser wäre es, den Listenelementen Klassen (oder IDs) zu vergeben. Die linken Paddings (oder Margins) landen dann entsprechend in die CSS-Datei.
Extra Elementen, wie div.navi_indent, brauchst Du dabei nicht. Außerdem wird der Quellcode dadurch invalide. 😉

Klassen (oder IDs) könntest Du nach einer der Methoden vergeben:

NO {
	wrapItemAndSub = <li class="li-{register:count_HMENU_MENUOBJ}">|</li>
	wrapItemAndSub.insertData = 1
}

# oder

NO {
	allWrap = <li class="li-{elementUid}">|
	wrapItemAndSub = |</li>
	subst_elementUid = 1
}

# oder

NO {
	before {
		dataWrap = <li class="li-{field:uid}">|
	}
	wrapItemAndSub = |</li>
}

# oder

NO {
	before.cObject = TEXT
	before.cObject {
		wrap = <li class="|
		field = title
		stdWrap {
			case = lower
			split {
				token.char = 32
				cObjNum = 1
				1 {
					current = 1
					wrap = |-
				}
			}
			substring = 0,-1
			wrap = |">
		}
	}
	wrapItemAndSub = |</li>
}
mille_85 ·

Hey, danke für die schnelle und ausführliche Antwort!
Ja sowas wie Klassen definieren habe ich mir gedacht, wusste aber nicht wie man das realisiert.
Die ganzen Befehle kannte ich noch nicht 🙂

etux ·
mille_85 schrieb

Hey, danke für die schnelle und ausführliche Antwort!

Bitte, gern. 🙂

mille_85 schrieb

Ja sowas wie Klassen definieren habe ich mir gedacht, wusste aber nicht wie man das realisiert.
Die ganzen Befehle kannte ich noch nicht 🙂

Da Du den Thread nicht auf „gelöst“ gestellt hast – hattest Du denn kein Erfolg damit?