Zum Inhalt springen

Fehler beim Menu-Rendern nach FE-Login

Erstellt am 28. Oktober 2008 · Noch keine Antworten

Tags: Frage

Bowler ·

Hallo zusammen,

ich habe ein seltsames Problem. Ich habe auf meiner Website einen Navigationspunkt auf der 1. Ebene der "Intern" heißt. Auf dieser Seite ist eine Loginbox.
Die Unterseiten werden erst nach erfolgreichem Login angezeigt. Soweit funktioniert auch alles. Entsprechend des Loginstatus werden auf der "Intern"-Seite nun auch andere Inhalte angezeigt.

Nun gibt es aber ein Problem beim Rendern des Menüs. Ich benutze ein Drop-Down-Menü bestehend aus verschachtelten Listen und CSS-Codes. Nun scheint Typo3 es irgendwie nicht hinzubekommen, dass das Hauptmenu "Intern" nach einem Login Untereinträge bekommt, und der TypoScript-Darstellungsparameter von NO, ACT oder CUR in IFSUB, ACTIFSUB oder CURIFSUB geändert werden muss. Stattdessen, wird das Submenu ausserhalb der Toplist gezeichnet.

Hm, klingt ganz schön kompliziert.

Hier mein TS-Code für die Navigation:

# Menu 1 cObject
lib.navigation = HMENU
lib.navigation.1 = TMENU
lib.navigation.1.expAll = 1

lib.navigation.1.NO {  
  allWrap=<div><ul class="n1"><li class="n1h" style="display:block;">|</li></ul></div>
  stdWrap.wrap=<span>|</span>
  ATagParams = class="mainlink"
}

lib.navigation.1.IFSUB =1
lib.navigation.1.IFSUB {  
  allWrap=<div><ul class="n1"><li class="n1h" style="display:block;">|
  stdWrap.wrap=<span>|</span>  
  ATagParams = class="mainlink"
}

lib.navigation.1.CURIFSUB =1
lib.navigation.1.CURIFSUB {  
  allWrap=<div><ul class="n1"><li class="n1h current" style="display:block;">|
  stdWrap.wrap=<span>|</span>  
  ATagParams = class="mainlink"
}


lib.navigation.1.CUR =1
lib.navigation.1.CUR {  
  allWrap=<div><ul class="n1"><li class="n1h current" style="display:block;">|</li></ul></div>
  stdWrap.wrap=<span>|</span>  
  ATagParams = class="mainlink"
}

lib.navigation.1.ACTIFSUB =1
lib.navigation.1.ACTIFSUB {  
  allWrap=<div><ul class="n1"><li class="n1h current" style="display:block;">|
  stdWrap.wrap=<span>|</span>  
  ATagParams = class="mainlink"
}

lib.navigation.1.ACT =1
lib.navigation.1.ACT {  
  allWrap=<div><ul class="n1"><li class="n1h current" style="display:block;">|</li></ul></div>
  stdWrap.wrap=<span>|</span>  
  ATagParams = class="mainlink"
}



lib.navigation.2 = TMENU
lib.navigation.2 {
  wrap = <div class="subnav"><ul class="n2h">|</ul></div></li></ul></div>
  expAll = 1

  NO = 1    
  NO {
   allWrap = <li>|</li>
   stdWrap.wrap=»  |
   10=TEXT
   10 {
    text.field=title
    fontColor=#000000
    fontSize=11       
   }
  }
  
  IFSUB = 1    
  IFSUB  {
   allWrap = <li>|</li>
   stdWrap.wrap=»  |
   10=TEXT
   10 {
    text.field=title
    fontColor=#000000
    fontSize=11       
   }	
  }
}

Und hier nun das HTML-Ergebnis:

  <div id="navigation">
    <div>
      <ul class="n1">
        <li class="n1h" style="display:block;"><a href="startseite/" onfocus="blurLink(this);" class="mainlink"><span>Startseite</span></a>
          <div class="subnav">
            <ul class="n2h">
              <li><a href="startseite/ueber-mich/" onfocus="blurLink(this);">»  Über mich</a></li>
              <li><a href="startseite/website-history/" onfocus="blurLink(this);">»  Website-History</a></li>
            </ul>
          </div>
        </li>
      </ul>
    </div>
    <div>
      <ul class="n1">
        <li class="n1h" style="display:block;"><a href="webdesign/" onfocus="blurLink(this);" class="mainlink"><span>Webdesign</span></a>
          <div class="subnav">
            <ul class="n2h">
              <li><a href="webdesign/design/" onfocus="blurLink(this);">»  Design</a></li>
              <li><a href="webdesign/programmierung/" onfocus="blurLink(this);">»  Programmierung</a></li>
              <li><a href="webdesign/content-management/" onfocus="blurLink(this);">»  Content-Management</a></li>
            </ul>
          </div>
        </li>
      </ul>
    </div>
    <div>
      <ul class="n1">
        <li class="n1h" style="display:block;"><a href="software-engineering/" onfocus="blurLink(this);" class="mainlink"><span>Software-Engineering</span></a>
          <div class="subnav">
            <ul class="n2h">
              <li><a href="software-engineering/konzepte/" onfocus="blurLink(this);">»  Konzepte</a></li>
              <li><a href="software-engineering/sprachen/" onfocus="blurLink(this);">»  Sprachen</a></li>
            </ul>
          </div>
        </li>
      </ul>
    </div>
    <div>
      <ul class="n1">
        <li class="n1h" style="display:block;"><a href="resourcen/" onfocus="blurLink(this);" class="mainlink"><span>Resourcen</span></a>
          <div class="subnav">
            <ul class="n2h">
              <li><a href="resourcen/links/" onfocus="blurLink(this);">»  Links</a></li>
              <li><a href="resourcen/referenzen/" onfocus="blurLink(this);">»  Referenzen</a></li>
            </ul>
          </div>
        </li>
      </ul>
    </div>
    <div>
      <ul class="n1">
        <li class="n1h current" style="display:block;"><a href="intern/" onfocus="blurLink(this);" class="mainlink"><span>Intern</span></a></li>
      </ul>
    </div>
    <div class="subnav">
      <ul class="n2h">
        <li><a href="privat/fotos/" onfocus="blurLink(this);">»  Fotos</a></li>
        <li><a href="privat/dokumente/" onfocus="blurLink(this);">»  Dokumente</a></li>
      </ul>
    </div>
    </li>
    </ul>
  </div>

Ich hoffe, Ihr versteht, was ich meine. Im letzten Abschnitt "Intern" wird die erste <ul> bereits wieder geschlossen, bevor das div "subnav" eingefügt werden kann. An den anderen Top-Menüs vorher seht ihr, dass die Verschachtelung eigentlich funktioniert. Dort wird die erste Liste geöffnet, die Subnavi-Liste reingesetzt, und dann die erste wieder geschlossen.

Wer es sich anschauen möchte:

http://dev.ruesken.net

User: kunde
Passwort: kunde

Das ganze hat dann zur Folge, dass dadurch, dass die DIVs falasch verschaltelt sind, der restliche Content nichtmehr angezeigt wird. Bzw. das Design komplett zerschossen ist. Getestet im FF3 und IE7.

Ich hoffe, ihr könnt mir helfen.

Viele Grüße
Christian