Zum Inhalt springen

menue mit viewhelper

Erstellt am 11. Juli 2019 · 4 Antworten · letzte Antwort am 17. Juli 2019

Tags: Frage

adam33 ·

Moin,

ich habe meine alten Menues genommen.

mainNavi4 = COA
mainNavi4 {
 
 5  = COA
 5 {
    wrap = <div class="level1-header">|</div>
    10 = TEXT
    10.dataWrap = {page:nav_title // page:title }
  }

 10 = HMENU
 10 {
   wrap = <div id="nav_col">|</div>
   special = directory
#   special.value = {$cMainNaviPid}   
   special.value.data = leveluid:-2,slide   
   excludeUidList = {$cExcludeList}
   includeNotInMenu = 0
   entryLevel = 0
   1 = TMENU
   1 {
      expAll = 1
      NO = 1
      NO {
#        allWrap = |<br />
        ATagParams = class="level1"
        after.cObject = COA
        after.cObject {
        15 = LOAD_REGISTER
        15 {
         cUID.dataWrap = {field:uid}
         cTITLE.dataWrap = {field:title}
        }         
        }
      }
      CUR < .NO
      CUR {
        doNotLinkIt = 1
        linkWrap = <span class="level1-active">|</span>
      }   
    
   }
   2 = TMENU
   2 {
     
    maxItems = 5
    expAll = 1
    NO = 1
    NO {
      linkWrap = |
      doNotLinkIt = 1
      ATagBeforeWrap = 0
      ATagParams = class="level2"
      stdWrap.htmlSpecialChars = 0
      
      stdWrap.cObject = COA
      stdWrap.cObject {

      # Die Register Anweisungen müssen zuerst erfolgen!!!  
      10 = LOAD_REGISTER |*| 0 |*| 
      10 {
          L2N.data = 0
      }
        
      20 = LOAD_REGISTER
      20 {
          L2N.stdWrap.dataWrap = {register:L2N}+1
          L2N.prioriCalc = 1
      }
        
      30 = TEXT 
      30 {
        if.value = 5
        if.isLessThan.data = register:L2N        
        field = subtitle
        typolink.parameter.field = uid
        typolink.ATagParams = class="level2"
      }  
       
      40 = TEXT
      40 {
          if {
             value = 5
             equals.data = register:L2N
           }       
           value = ...mehr
           typolink.parameter.data = register:cUID
           typolink.ATagParams = class="level2-more"
      }
     }
    }
    CUR < .NO
    CUR {
      doNotLinkIt = 1
      linkWrap = <span class="level2-active">|</span>
    }     
  }
 }  
}

Den habe ich ausgelagert und ins TS eingebunden. Einbinden klappt auch. Bin dann hingegangen und habe mein Template durch einen viewhelper ergänzt, <f:cObject typoscriptObjectPath="lib.mainNavi4"/>. Wenn ich mir nun den Quelltext anschaue, dann sehe ich, dass nur der erste html tag, also wrap = <div class="level1-header">|</div>, gerendert wird. Das gleiche habe ich beim breadcrumb und meinem Registermenue. Früher gings tadellos. Was mache ich falsch?

Mit freundlichen Grüßen

adam33 ·

Danke, aber daran liegt es nicht. Das hatte ich nur vergessen wieder einzutragen, aber vom Grundsatz habe ich das drin. Ich hatte nur Lib groß geschrieben und mich gewundert warum das so angezeigt wird im ObjectBrowser. Wie auch immer, nun wird mainNavi4 bei den anderen unter lib im ObjectBrowser angeezeigt. Wenn ich mainNavi4 ausklappe, dann werden auch hier alle Ebenen angezeigt. Jetzt sieht man im Frontend Garnichts mehr.

adam33 ·

Ich habe gelesen, dass die Initialisierung vor der Zuweisung im Variablenblock erfolgen muss. Zwar binde ich die lib am Anfang des Setups ein aber ich habe den rootline-Teil nochmal direkt ins setup gepackt. Im Block variables weise ich zu z.B. rootLineNavi < lib.rootLineNavi. Weder das erneute kopieren aus der lib, noch die Variablenzuweisen müsste sein. Eigentlich sollte ich per viewhelper f:cObject direkt auf die lib zugreifen können. Sonst wäre der ganze Zweck des Auslagerns nicht gegeben.

adam33 ·

verstehe ich nicht, denn mein Header ist genauso eingebunden, zwar mit dem viewhelper <f: format.raw> aber im Prinzip ist das gleich. Klar, ich initialisiere HEADERLEFT im variablenblock indem ich schreibe: HEADERLEFT = IMAGE; HEADERLEFT.file = PfadzurDatei. Prinzipiell ist aber nichts anders. Ich verstehe nicht, kann jemand bitte helfen?