Zum Inhalt springen

Content-Wrap in Abhängigkeit von Untermenü

Erstellt am 11. Juli 2007 · 6 Antworten · letzte Antwort am 12. Juli 2007

Tags: Frage

iomorph ·

Hallo da draußen,

hat zufällig jemand einen Tip für mich, wie man im TypoScript den Contentbereich anders wrappen kann je nachdem ob es Unterseiten zu der aktuellen Seite gibt oder nicht?
Also nicht das Menü soll anders gewrapped werden sondern der Inhalt.
Ich weiß weder mit Conditions noch mit if-Abfrage wie ich diesen Bezug zwischen Menü und Inhalt herstellen könnte.

Hilfe wäre ganz ganz großartig.
Danke

Karin

Julian.​Hofmann ·

Hallo Karin.

Müsste gehen, indem Du mit Registern arbeitest.

Bei der Menüerzeugung kannst das Register auf einen bestimmten Wert setzen,w enn ein untermenü aufgebaut wird (also Unterseiten da sind). Vor der Ausgabe des Contents kannst Du dann abfragen, welcher Wert im Register steht, und entsprechend wrappen.

Viele Grüße
Julian

iomorph ·

Hallo Julian,

danke für die schnelle Antwort.
Mit Registern habe ich es schon mal versucht, schaffe es aber offensichtlich nicht das richtig anzuwenden.

Mein TypoScript sieht etwa so aus:

###########
# das Menü
###########
temp.MENUE = HMENU
temp.MENUE.special = list
temp.MENUE.entryLevel = 0
temp.MENUE.1 = TMENU
temp.MENUE.1.collapse = 0
temp.MENUE.1.noBlur = 1 
temp.MENUE.1.NO{
 stdWrap.htmlSpecialChars = 1
 linkWrap = |
}
################
# das Untermenü
################
temp.MENUE.2 = TMENU
temp.MENUE.2.expAll = 0
temp.MENUE.2.collapse = 0
temp.MENUE.2.noBlur = 1
temp.MENUE.2.NO{
 stdWrap.htmlSpecialChars = 1
 linkWrap = |
}

#############
# der Inhalt
#############
temp.CONTENT < styles.content.get
temp.CONTENT = CONTENT 
temp.CONTENT{
 table = tt_content
 select.where = colPos = 0
}
temp.CONTENT.wrap = <div> | </div>

Wie genau baue ich Register da so ein, dass ich Einfluß auf temp.CONTENT.wrap habe? Ich versteh es leider nicht.

Gruß
Karin

Julian.​Hofmann ·

Hallo Karin.

Mit Registern hab ich bisher auch noch nicht viel Erfahrung (machen müssen). Etwas problematisch sehe ich, dass Du das Register in einem Objekt setzen und im anderen auswerten müsstest...

Andere Idee:
Ist der Seitenbaum so fest, dass Du die Page-IDs der Elternseiten weißt? Oder sind die Untermenüs in bestimmter Ebene? Dann könnten Dir die Conditions helfen.
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html#condition-tree-rootlineparentids
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html#condition-tree-level

Viele Grüße
Julian

iomorph ·

Hi Julian,

das mit dem Seitenbaum und den Untermenüs ist wahrscheinlich auch keine Lösung, weil das ganze dynamisch sein muß und manche Seiten haben Unterseiten und andere nicht.
Im Grunde sähe die Menüstruktur etwa so aus:

Ebene 1 1
Ebene 1 1
Ebene 2 1
Ebene 2 2
Ebene 3 1 (kann da sein, muß aber nicht)
Ebene 3 2 (kann da sein, muß aber nicht)
Ebene 2 3

Wenn man auf der Menüebene 2 ist und die aktuelle Seite Unterseien hat, muß sich die dritte Ebene reinschieben und der Inhalt wird anders gewrapped, wenn die aktuelle Seite keine Unterseiten hat, darf sich aber nichts verschieben. Und ob eine Seite Unterseiten hat oder nicht, bestimmen die Redakteure - IDs nützen hier deshalb vermutlich nicht viel.

Ich fürchte das Problem kann wohl doch nur per CSS gelöst werden, was ein ziemliches Gefrickel wird. Eine einfache TS-Abfrage wäre schon schöner gewesen. Schade.

Trotzdem ganz herzlichen Dank für deine Unterstützung.
Karin

Julian.​Hofmann ·

Hallo Karin.

Irgendwie haben mich die Register selber gereizt...

temp.nav = COA
temp.nav.15 = LOAD_REGISTER 
temp.nav.15 {
     hasSub = 0
   }
temp.nav.20 = HMENU
temp.nav.20 {
  entryLevel = 0
  accesskey = 1
  1 = TMENU
  1 {
    NO = 1
    ACT = 1
        wrap = <ul> | </ul>
    noBlur = 1
    NO {
      allWrap = <li> | </li>
      stdWrap.htmlSpecialChars = 1
    }
    CUR {
      allWrap = <li class="aktiv"> | </li>
      stdWrap.htmlSpecialChars = 1
    }
    ACT {
      wrapItemAndSub = <li class="opened"> | </li>
      stdWrap.htmlSpecialChars = 1
    }
    CURIFSUB = 1
    CURIFSUB.stdWrap.append = LOAD_REGISTER
    CURIFSUB.stdWrap.append.hasSub = 1
  }
  2 < .1
  3 < .1
}

page = PAGE
page {
   typeNum = 0
   10 < temp.nav
   20 = COA
   20 {
     10 = TEXT
     10.value = <div style="border: 1px dashed Lime; magin: 20px;"><p>Hat Unterpunkte</p>
     10.if.value = 1
     10.if.equals.data = register:hasSub
     20 < .10
     20.value = <div style="border: 1px dashed red; magin: 20px;"><p>Hat keine Unterpunkte</p>
     20.if.value = 0
   } 
   30 < styles.content.get
   30.wrap = |</div>      
}

Damit sollte es klappen. An der ein oder anderen Stelle gehört sicher noch etwas aufgeräumt, geht aber ja auch primär drum, wie's funktioniert.

Viele Grüße
Julian

iomorph ·

Hallo Julian,

danke, du bist großartig, das scheint zu funktionieren.
Jezt muß ich das nur noch in mein Template eingebaut bekommen und alles wird gut.

Dir ein schönes Wochenende und weiterhin so kreative Einfälle.

Karin