Zum Inhalt springen

Mehrfarbige Menüs?

Erstellt am 27. November 2002 · 9 Antworten · letzte Antwort am 3. Januar 2005

Tags: Frage

maxhb ·

Hi!
Nch einiger Recherche jetzt die Frage ans Forum: Kann man mit TS eine Menü erzeugen, bei dem die einzelnen Einträge verschiedene Farben haben (z.B. als Farbleitsystem)?

Bsp.:
Grün
Grün
Grün
Grün
Rot
Rot
Blau
Blau
Blau

Daraus ergibt sich die Frage, ob man statt der Farbe in einem GMENU entsprechend auch die Bilder austauschen kann.

Hoffentlich kann mir jemand helfen
Thomas

maxhb ·

Hi!
Das Menübeispiel sollte natürlich so aussehen:
Grün
---Grün
------Grün
---Grün
Rot
---Rot
Blau
---Blau
---Blau

nazgul23 ·

hi maxhb,

hier fällt mir spontan der Split-Operator ein: || oder |*|

Ich habe vom Split-Operator auch nicht alles kapiert, aber du kannst es in der TS-Ref (Ausgabe May 2002) auf Seite 31 bzw dein Problem auf S. 32 nachlesen. Dort ist es mit einem Beispiel erklährt.

Viele Grüße
nazgul23

maxhb ·

Hi Nazgul!
Komisch, während der letzten (schlaflosen) Nacht bin ich genau darüber in dem Go-Live Tutorial gestolpert 😉

Für die oberste Navigationsebene ist das auch O.K., da ich dann entsprechend für jeden Eintrag quasi einen eigenen Wrapper erstellen kann.

Leider hilft das aber nicht weiter in Bezug auf die Unterseiten, so nach dem Motto, alle Kinder der grünen Hauptseite sind auch grün.

Trotzdem erstmal danke für's posten
maxhb

fbrockerhoff ·
maxhb schrieb

Leider hilft das aber nicht weiter in Bezug auf die Unterseiten, so nach dem Motto, alle Kinder der grünen Hauptseite sind auch grün.

Hoi,

habt Ihr hierzu in der Zwischenzeit eine Lösung gefunden? Ich hänge genau an dem Problem gerade fest. In phpCMS war das alles so schön einfach, aber jetzt hänge ich bei der Migration genau dieses Parts...

Schönen Gruß,

Falk

fbrockerhoff ·

Hoi,

Danke für den Link. Ich bin über einige interessante Sachen gestolpert und habe eine Menge mehr über Typo3 gelernt ;-)

Die gezeigte Lösung ändert die Farben der Submenüs erst dann, wenn auf einen Link, der zu einer Unterseite führt, geklickt wurde. Wenn die jeweiligen Submenüpunkte im Vorfeld schon auf der Startseite gezeigt werden sollen, ist keine Änderung der Farbe möglich.

Ich möchte gerne alle Elemente (Ebene 1 und Ebene 2) eines Menüs auf einer Seite darstellen - pro Rubrikg auf Ebene 1 in einer Farbe, die an Ebene 2 vererbt wird. Ich hab nur keinen blassen Schimmer, wie ich da vorgehen soll.

Ich habe bereits mehrere Ansätze durch und jedesmal scheitert es daran, daß ich ein Wrap nur für die Elemente einer Ebene machen kann und nicht zwischen dem jeweiligem Parsen der kompletten Ebene 2.

Gruß,

Falk

fbrockerhoff ·

Hoi,

ich habe nun eine Lösung gefunden. Ich finde diese zwar nicht elegant, aber was ein anderer Weg fällt mir nicht ein.

Ich erstelle nun für jeden Punkt auf der Menüeben1 ein eigenes Menü, welches auf eine m Template basiert, und beschränke die anzuzeigenden Elemente.

Menütemplates (Ebene 1 und 2):

temp.TOPNAVI_Template = HMENU
temp.TOPNAVI_Template.special = directory
temp.TOPNAVI_Template.special.value = 4

# Menutemplate Ebene 1 erzeugen
temp.TOPNAVI_Template.1 = TMENU_LAYERS
temp.TOPNAVI_Template.1 {
	layerStyle = {$submenu_position.layerStyle}
	relativeToTriggerItem = {$submenu.relativeToTriggeritem}
	relativeToParentLayer = {$submenu.relativeToParentLayer}

	# Menu verankern, damit es nicht der Maus folgt
	lockPosition = x
	xPosOffset = -24

	# Position wo sich die naechste Ebene oeffnen soll (Ebene 2)
	relativeToParentLayer=1
	relativeToTriggerItem=1
	topOffset = {$submenu.topOffest}
	leftOffset = {$submenu.leftOffest}

	# Angabe wann sich die naechste Ebene wieder schliessen soll
	hideMenuWhenNotOver = 50
	hideMenuTimer = 70

	# alle Menuepunkte anzeigen
	expAll=1

	# Darstellung der aktuellen Ebene
	wrap = |

	ACT = 1
	ACT < .NO
} 
# Ende Ebene 1

# Menutemplate Ebene 2 erzeugen
temp.TOPNAVI_Template.2 = TMENU_LAYERS
temp.TOPNAVI_Template.2 {
    layerStyle = position:absolute;VISIBILITY:hidden;

    # Menu verankern, damit es nicht der Maus folgt
    lockPosition = x

    # Position wo sich die naechste Ebene oeffnen soll (Ebene 2)
    relativeToParentLayer=1
    relativeToTriggerItem=1
    topOffset=0
    leftOffset=140 

    # Angabe wann sich die naechste Ebene wieder schliessen soll
    hideMenuWhenNotOver = 50
    hideMenuTimer = 70

    # alle Menuepunkte anzeigen
    expAll=1

    # Darstellung der aktuellen Ebene
    wrap = <table class="menutable" style="height: 25px; width: 90px;">|</table>
} 
# Ende Ebene 2

Nun kopiere ich dieses Template für jeden darzustellenden Menüpunkt und "exclude" alle Seiten auf dieser Ebene bis auf das darzustellende Element:

# Kategorie Sport
temp.TOPNAVI_Sport < temp.TOPNAVI_Template
temp.TOPNAVI_Sport.excludeUidList = 14,15,16,17,18,20
temp.TOPNAVI_Sport.1 {
	NO {
		allWrap = <td class="menucell" style="height: 25px; width: 90px;" bgcolor="{$varSection_Sport_bgcolor}">|</td>
	   }
}
temp.TOPNAVI_Sport.2 {
	NO {
		allWrap = <tr><td class="menucell" bgcolor="{$varSection_Sport_bgcolor}">|</td></tr>
	   }
}

# Kategorie Travel
temp.TOPNAVI_Travel < temp.TOPNAVI_Template
temp.TOPNAVI_Travel.excludeUidList = 14,15,16,17,19,20
temp.TOPNAVI_Travel.1 {
	NO {
		allWrap = <td class="menucell" style="height: 25px; width: 90px;" bgcolor="{$varSection_Travel_bgcolor}">|</td>
	   }
}
temp.TOPNAVI_Travel.2 {
	NO {
		allWrap = <tr><td class="menucell" bgcolor="{$varSection_Travel_bgcolor}">|</td></tr>
	   }
}

[...]

Im HTML-Template füge ich nun jedes Menü manuell ein. Dadurch ist die Darstellung leider statisch, aber irgendwo ist halt immer ein Haken :-(

Nachtrag: ich habe noch einen Haken gefunden in der Kombination mit xMENU_LAYERS. Da jetzt mehrere Menüs zum Einsatz kommen, die nur wie ein zusammenhängendes _wirken_, werden andere Menüpunkte nicht automatisch ausgeblendet, wenn man mit der Maus über einen neuen Punkt fährt. DEr Browser verhaspelt sich auch mal ganz gerne und schließt ein Menü nicht, so daß dann zwei geöffnet sind.

Der Weisheit letzer Schluß ist das noch nicht. Wenn irgendjemand einen Tipp hat, wie dies mit einem einzigem Menü zu lösen ist, wäre ich sehr dankbar.

Schönen Gruß,

Falk

nagus ·

ich hab genau das gleiche problem: wie realisiert man elegant ein farbleitssytem mit TMENU?

am einfachsten wäre ja einfach sowas:

wrap(
layerStyle = background-color:#CC0000;position:absolute;border:0px solid;VISIBILITY:hidden;width:200px;||
layerStyle = background-color:#000000;position:absolute;border:0px solid;VISIBILITY:hidden;width:200px;||
layerStyle = background-color:#0000CC;position:absolute;border:0px solid;VISIBILITY:hidden;width:200px;||
layerStyle = background-color:#000CC0;position:absolute;border:0px solid;VISIBILITY:hidden;width:200px;||
)

... nur leider funktioniert das nicht 🙁

hat jemand eine lösung gefunden?