[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