Zum Inhalt springen

COA komplett entfernen wenn eine Komponenten leer ist

Erstellt am 21. Oktober 2011 · 3 Antworten · letzte Antwort am 25. Oktober 2011

Tags: Frage

Oliver_S ·

Hi Leute,
ich brauch mal wieder hilfe bei einem Problem an dem ich solangsam verzweifel (google und Forensuche bringen mich auch nicht mehr weiter). #angry#

Also im Prinzip habe ich genau dieses Problem:
#74395

Nur ist die leere Komponente kein field das ich über stdWrap.if abfragen könnte.

Vielleicht kann man es doch mit if abfragen und ich bin blos zu blöd das will ich gar nicht ausschließen ;-)
Ich bin in Typoscript noch ein ziemlicher Anfänger...

tmp.navi = HMENU
tmp.navi {
  entryLevel = 1
  1 = TMENU
  1 {
    wrap = <nav id="subNav"><ul id="naviMain2">|</ul></nav>
    NO = 1
    NO.wrapItemAndSub = <li>|</li>
        
    CUR = 1
    CUR < .NO
    CUR.wrapItemAndSub = <li class="current">|</li>
    ACT < .CUR
  }
}

lib.subnav = COA
lib.subnav{  
  10 = TEXT
  10.value = <aside class="cols p25">
   
  20 = TEXT
  20 {
    data = fullRootLine : 1, nav_title // fullRootLine : 1, title
    required = 1
    wrap = <span class="h3">|</span>
  }
  
  30 < tmp.navi
  
  100 = TEXT
  100.value = </aside>
}

wenn tmp.navi bzw lib.subnav.30 leer ist soll lib.subnav generell nicht angezeigt werden.

mein problem warum ich das ganze überhaupt aufgesplittet habe war das ich den Titel des Eltern Elements über der Navigation ausgeben muss (data = fullRootLine : 1, nav_title // fullRootLine : 1, title) und ich keinen Ansatz gefunden habe wie ich den da sonst rein kriege.

wenn das ein komplett falscher ansatz ist und es wahrscheinlich anders viel einfacher geht bin ich für alles offen!

vielen Dank im vorraus!

Julian.​Hofmann ·

Hallo.

Glaube, ich würde etwas anders ansetzen:
tmp.navi bleibt leer, wenn kein Menüitem vorhanden ist. D.h. alles, was vor/hinter das Menü soll, kann davon abhängig gemacht werden. Das HMENU hat stdWrap-Eigenschaften, d.h. Du kannst dort das required reinhängen und via prepend/append/wrap die Inhalte aus jetzigem lib.subnav drumherumbauen.

Viele Grüße
Julian

zeroalpha ·

Also wenn ich dich richtig verstehe, dann willst du über deinem Subnav den übergeordneten Menüpunkt ausgeben.

Ich hab das damals so gemacht...

temp.SUBMENU = COA
temp.SUBMENU {
stdWrap.required = 1

stdWrap.prepend = TEXT
stdWrap.prepend {
wrap = <span class="Navi_Titel">|</span>
data = leveltitle: 1|1

}
1 = HMENU
1 {

#special = directory
#special.value = 6
entryLevel = 1

1 = TMENU
1.wrap= <ul>|</ul>
1.noBlur = 1

1.NO = 1
1.NO.ATagTitle.field = title
1.NO.ATagParams = class="Navi"
1.NO.wrapItemAndSub = <li>|</li>
1.NO.linkWrap = » | |*| » | |*| » | 


2 < .1
2.wrap = <ul>|</ul></li> 

}
}
Oliver_S ·

Danke für die Ansätze 🙂 hat mich wirklich weiter gebracht!

Hier einmal meine Lösung:

lib.subnav = HMENU
lib.subnav{
  stdWrap.required = 1
  stdWrap.prepend = TEXT
  stdWrap.prepend{
    data = fullRootLine : 1, nav_title // fullRootLine : 1, title
    required = 1
    wrap = <aside class="cols p25"><span class="h3">|</span>
  }
  
  stdWrap.append = TEXT
  stdWrap.append.value = </aside>
  
  entryLevel = 1
  1 = TMENU
  1 {
    wrap = <nav id="subNav"><ul id="naviMain2">|</ul></nav>
    NO = 1
    
    NO{
      allWrap.insertData=1
      allWrap = <li class="menu{field:layout}">|
      wrapItemAndSub = |</li>
    }
        
    CUR = 1
    CUR < .NO
    CUR.allWrap=<li class="current menu{field:layout}">|
    ACT < .CUR
    
    #IFSUB = 1
    #IFSUB.wrapItemAndSub = <li class="parent">|</li>
    
    CURIFSUB < .ACT
    CURIFSUB.allWrap=<li class="parent menu{field:layout}">|
    ACTIFSUB < .CURIFSUB

  }
  
  2 < .1
  2.wrap = <ul>|</ul>
  3 < .2
  4 < .3
 
}