[TYPO3-german] GMENU Problem

JoH asenau info at cybercraft.de
Fri Jun 1 01:32:24 CEST 2007


> ich bin wahrscheinlich zu doof für typo3. Folgendes problem: Ich habe
> ein horizontales hauptmenü über max. 600px breite. Jeder Hauptpunkt
> hat ein vertikales Submenü. Ich möchte nun, dass die grafiken der
> ersten ebene die breite des längsten menüeintrages der zweiten ebene
> annehmen.

In diesem Fall ist TYPO3 eher zu doof für das Problem ;-)
Man hätte die largestItem Optionen nämlich durchaus auf HMENU Ebene einbauen
können.
Da das aber ein eher seltener Anwendungsfall ist, hat's wohl bisher niemand
benötigt.

> Das ganze soll so aussehen: http://ritmo.pimpmyfotos.de/ritmo.jpg
> Imo siehts aber so aus: http://ritmo.pimpmyfotos.de/
>
> Dieses ts habe ich bisher gebastelt:
>
> lib.navigation = HMENU
> lib.navigation {
>   applyTotalH = 40
>   useLargestItemX = 1
>   useLargestItemY = 1

Diese beiden Properties gibt's nicht für HMENU sondern nur für GMENU und sie
würden auch dort nichts nützen, weil jede Ebene aus einem eigenen GMENU
besteht.
Dennoch könnte es mit ein wenig TS Trickeserei gehen und dann machen die
beiden auch wieder Sinn.

Dann schau mer mal:

Der Knackpunkt ist, daß TYPO3 auf der ersten Ebene schon "wissen" muß, wie
breit die zweite wird.
Weil das kaum möglich ist, bedeutet das logischerweise, daß alle Einträge in
einer "Ebene" liegen müssen.
Mit anderen Worten, Du brauchst ein Menü, das die erste Ebene mit der
zweiten zusammenschmeißt und das geht nur mit Hilfe von
special = list und special = directory

Um die Liste zu befüllen, brauchst Du zwei Dummy TMENUs.

lib.navigation = HMENU
lib.navigation {
  1 = TMENU
  1 {
    # wrap für das gesamte Menü
    wrap = <table><tr>|</tr></table>

    NO {
      # wrap für jede Spalte
      allWrap = <td>|</td>

      # kein Link, weil wir nur die uid wollen
      doNotLinkIt = 1

     # statt des Textes wird ein weiteres Menü
     # generiert, das die uid der Seite auf Ebene 1
     # sowie aller ihrer Unterseiten enthält
     stdWrap.cObject = HMENU
      stdWrap.cObject {
        special = list
        special.value.cObject = COA
        special.value.cObject {


          # das ist die uid der Elternseite
          10 = TEXT
          10.field = uid

          # und hier folgen die Kinder
          20 = HMENU
          20 {
            special = directory
            special.value.field = uid
            1 = TMENU
            1 {
              NO {
                # wieder kein Link
                doNotLinkIt = 1

                # sondern eine Liste von uids
                stdWrap.field = uid
                stdWrap.wrap = ,|
              }
            }
          }
        }

        # Die Liste ist vollständig
        # bauen wir also das GMENU
        1 = GMENU
        1 {
            # und hier kommt der code
            # für das GMENU hin
            # es gibt nur eine Ebene
            # für Hauptseite und Kinder
            # ggf. muß also noch optionSplit
            # eingebaut werden
        }
      }
    }
  }
}

Getestet (mit einem <ul> basierten TMENU anstatt GMENU) und läuft ...

HTH

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