[TYPO3-german] GMENU Problem
JoH asenau
info at cybercraft.de
Tue Jun 5 19:53:39 CEST 2007
>> Nun, ich weiß leider nicht, wo's bei Dir hakt, denn dieser Code hier:
>>
>> [snip]
>>
>> Produziert dieses Ergebnis: http://www.4any1.de/index.php?id=287
>>
>> Wie Du siehst, ist das alles ziemlich OK und die Breiten verhalten
>> sich genau wie gewünscht.
>
> vorab: 1000 Dank. Hätte ich den entryLevel richtig gesetzt hätte ich
> mir einiges sparen können.
> Wie es aber immer ist kommt nach der Lösung des einen das nächste
> Problem. Wie stelle ich es jetzt an, dass die horizontale Hauptnavi
> und nur die vertikale Subnavi des aktuellen Hauptnavipunktes sichtbar
> ist?
Das geht logischerweise nur über CSS, weil die Grafiken ja in jedem Fall
alle generiert werden müssen, damit die Breiten feststellbar sind. Das Menü
ist also vollständig im HTML Code zu sehen, wird aber über display:none;
teilweise ausgeschaltet.
Weil das nur für die zweite Ebene gelten soll, brauchst Du ein Register, das
nur mit uids der ersten Ebene gefüllt wird. Damit wird im Zustand NO per if
Abfrage alles ausgeschaltet, das nicht auf der ersten Ebene liegt. Beim
zustand ACT wird für die Unterpunkte des aktiven punktes das display:none;
wieder rausgeschmissen.
Du kannst stattdessen selbstverständlich auch eine CSS Klasse verwenden und
diese z.B. mit Hilfe von JavaScript schon onmouseover verändern. Damit wäre
sogar ein Layer-Menü denkbar wenn Du die uid in die class mit einbaust.
Hier nochmal komplett
lib.navigation2 = HMENU
lib.navigation2 {
1 = TMENU
1 {
wrap = <table><tr>|</tr></table>
NO = 1
NO {
doNotLinkIt = 1
stdWrap.cObject = HMENU
stdWrap.cObject {
special = list
special.value.cObject = COA
special.value.cObject {
# hier das register
# für die erste ebene
5 = LOAD_REGISTER
5.level1Uid.field = uid
10 = TEXT
10.field = uid
20 = HMENU
20 {
special = directory
special.value.field = uid
1 = TMENU
1 {
NO {
doNotLinkIt = 1
stdWrap.field = uid
stdWrap.wrap = ,|
}
}
}
}
1 = GMENU
1 {
wrap = <td valign="top"><table>|</table></td>
useLargestItemX = 1
useLargestItemY = 1
NO {
allWrap.cObject = COA
allWrap.cObject {
10 = TEXT
10 {
# für alle Seiten
# der ersten Ebene
value = <tr><td>|</td></tr>
if {
value.data = register:level1Uid
equals.field = uid
}
}
20 = TEXT
20 {
# für alle Seiten
# der zweiten Ebene
value = <tr style="display:none;"><td>|</td></tr>
if {
value.data = register:level1Uid
equals.field = uid
negate = 1
}
}
}
XY = [10.w]+20,30
backColor = #990000
10 = TEXT
10 {
text.field = title
fontSize = 20
fontColor = #FFFFFF
offset = 10,22
niceText = 1
}
}
}
}
}
ACT < .NO
ACT {
stdWrap.cObject.1.NO.allWrap.cObject {
10 {
# Abfrage ausschalten
# damit wrap für alle Ebenen
# im aktiven Zweig gleich ist
if >
}
# zweiten wrap deaktivieren
20 >
}
}
}
}
Sollte so klappen.
Joey
--
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your gob sometimes!)
Dieter Nuhr, German comedian
openBC/Xing: http://www.cybercraft.de
T3 cookbook: http://www.typo3experts.com
More information about the TYPO3-german
mailing list