Zum Inhalt springen

zwei Menus abhaengig voneinander steuern

Erstellt am 4. März 2009 · 5 Antworten · letzte Antwort am 11. März 2009

Tags: JavaScript & AJAX, Frage

Patrick S.​ ·

Kann ich zwei voneinander unabhaengige Menus abhaengig voneinander steuern? 😉 Witziger Satz.

Angenommen ich habe zwei Menus, 1. und 2. Ebene. Wenn ich im ersten Menu ueber einen Punkt fahre, ohne ihn anzuklicken, dann stelle ich mir vor, dass im zweiten Menu die Eintraege dargestellt werden, die den Unterpunkten des Menus in erster Ebene entsprechen, wo ich gerade mit der Maus bin.

Das ganze mit GMENU? Ein kleiner Denkansatz koennte mich schon zum weiter Recherchieren bringen, aber ohne Grundidee fehlt mir jeglicher Ansatz.

einert ·

Ich könnte mir vorstellen, dass das ganze mit GMENU_LAYER funktioniert.
Dann müsste das erscheinende Untermenü entsprechend positioniert werden.
Im Normalfall erscheinen die Unterpunkte in Abhängigkeit des entsprechenden Navigationspunnktes.
Das müsste man entsprechend testen, da die Liste mit den Unterpunkten ja auch zu einer bestimmten Zeit ausgeblendet werden sollen oder auch nicht.
Hoffe der Hinweis liefert einen kleinen Denkansatz.

Unbekannter Benutzer ·

Das GMENU_LAYERS ist ja im Prinzip auch nur GMENU + Javascript, allerdings finde ich es nicht besonders elegant. Da ist es doch schöner selbst das JS zu schreiben.

Patrick S.​ ·

Ich habs jetzt mal mit GMENU_LAYERS probiert. Das Menu wird tatsaechlich vorgeladen, dafuer wird aber das eigentliche Menu in zweiter Ebene gar nicht mehr angezeigt.

Soll heissen.. ich habe ein Menu in erster Ebene, das per GMENU_LAYERS beim Drueberfahren mit der Maus das zweite Menu und deren Menupunkte darstellt.

Dieses hier:

MENU_1 = HMENU
MENU_1   {
	special = directory
	special.value = 2
	maxItems = 6
	wrap = <div> | </div>
	1 = GMENU_LAYERS
	1 {
		dontFollowMouse = 1
		expAll=1 	
	}
	1.layerStyle = position:absolute; VISIBILITY:hidden; top:10px;
	1.noBlur = 1
	1.NO = 1
	1.NO {
		format = png
		quality = 100
		XY = 274, 80 || 91,80 
		1 = IMAGE
		1.file = 	fileadmin/templates/images/main_no.png || fileadmin/templates/images/news_no.png || fileadmin/templates/images/investieren_no.png || fileadmin/templates/images/service_no.png || fileadmin/templates/images/anfahrt_no.png || fileadmin/templates/images/ansprechpartner_no.png
		
		5 = TEXT
		5 {
			text.field = || title || title || title || title || title
			text.case = upper
			fontFile = fileadmin/templates/fonts/arial.ttf
			fontColor = white
			fontSize = 12
			niceText = 1
			offset = 4, 47
		}	
	}
	1.NO.5.stdWrap.split {
		token.char = 43
		cObjNum = 1
		1.current = 1
		1.wrap = <div style=""> | </div>
	} 		
	1.ACT < .1.NO
	1.ACT.1.file = 	fileadmin/templates/images/main_ro.png || fileadmin/templates/images/news_ro.png || fileadmin/templates/images/investieren_ro.png || fileadmin/templates/images/service_ro.png || fileadmin/templates/images/anfahrt_ro.png || fileadmin/templates/images/ansprechpartner_ro.png	
	1.RO < .1.ACT
}
	
MENU_1.2 = GMENU
MENU_1.2 {
	entryLevel = 1
	wrap = <div style="float:left;"> |</div></div>
	NO = 1
	NO.XY = [5.w]+32,22
	NO.backColor = {$MAINCOLOR}
	NO.5 = TEXT
	NO.5 {
		text.field = title
		text.case = upper
		fontFile = fileadmin/templates/fonts/arial.ttf
		fontColor = white
		fontSize = 10
		niceText = 1
		offset = 16, 16
	}
	NO.10 = IMAGE
	NO.10.file = GIFBUILDER
	NO.10.file {
		XY = 1, 12
		backColor = white
	}
	NO.10.offset = 0, 10
	ACT = 1
	ACT.ATagParams = class="displayNone"
}

Und dann fuelle ich noch im Template einen Marker (bzw es sind zwei), in dem ich gern das wirkliche Menu in zweiter Ebene dargestellt haben moechte. Das mache ich deswegen, weil das zweite Menu im Gesamten etwas komplexer (zwei Marker, zwei Zustaende, aber nicht wichtig) ist und sich nicht ausschliesslich via GMENU_LAYERS darstellen laesst. Jedenfalls optisch nicht.

Und so sieht es in zweiter Ebene aus:

MENU_2ACT = HMENU
MENU_2ACT   {
	entryLevel = 1
	1 = GMENU
	1.ACT = 1
	1.wrap = <div style="display:none; width:1015px; height:22px; background-color:{$MAINCOLOR};"><div style="float:left;"> | </div>
	1.ACT.XY = [5.w]+20,32
	1.ACT.backColor = white
	1.ACT.5 = TEXT
	1.ACT.5 {
		text.field = title
		text.case = upper
		fontFile = fileadmin/templates/fonts/arial.ttf
		fontColor = {$MAINCOLOR}
		fontSize = 12
		niceText = 1
		offset = 10, 30
	}
	
	1.ACT.10 = IMAGE
	1.ACT.10.file = GIFBUILDER
	1.ACT.10.file {
		XY = 1, 12
		backColor = white
	}
	1.ACT.10.offset = 0, 10
		
	1.ACT.15 = IMAGE
	1.ACT.15.file = GIFBUILDER
	1.ACT.15.file {
		XY = [5.w]+500, 10
		backColor = {$MAINCOLOR}
	}
	1.NO = 1
	1.NO.ATagParams = class="displayNone"
}

MENU_2NO = HMENU
MENU_2NO   {
	entryLevel = 1
	1 = GMENU
	1.wrap = <div style="float:left;"> |</div></div>
	1.NO = 1
	1.NO.XY = [5.w]+32,22
	1.NO.backColor = {$MAINCOLOR}
	1.NO.5 = TEXT
	1.NO.5 {
		text.field = title
		text.case = upper

		fontFile = fileadmin/templates/fonts/arial.ttf
		fontColor = white
		fontSize = 10
		niceText = 1
		offset = 16, 16
	}
	1.NO.10 = IMAGE
	1.NO.10.file = GIFBUILDER
	1.NO.10.file {
		XY = 1, 12
		backColor = white
		
	}
	1.NO.10.offset = 0, 10
	1.ACT = 1
	1.ACT.ATagParams = class="displayNone"
}

Das Problem ist jetzt, dass das zweite Menu gar nicht angezeigt wird. Nie.. Wenn ich das erste Menu deaktiviere oder von GMENU_LAYERS auf GMENU zurueckstufe, dann ist es wieder da. Nur warum? Ich sehs nicht..

Patrick