06.05.2011

Layout des Inhaltselements wrappen

Christian Wolfram in Snippets/Tutorials/TYPO3/TypoScript

In TYPO3 gibt es in den einzelnen CE's unter dem Karteireiter "Erscheinungsbild" (engl. Appearance) eine Select Box mit der Überschrift "Layout des Inhaltselements". Ohne zusätzliche TypoScript Konfiguration bleibt diese Funktion von TYPO3 leider ungenutzt, obwohl ein enorm starkes Potential in ihr steckt.

 

Nach einer Standardinstallation von TYPO3 heißen die Optionsfelder in der Select Box "Standard", "Layout 1", "Layout 2", "Layout 3". Allerdings kann man sich nach der späteren Konfiguration dieser Elemente schlecht etwas unter diesen Begriffen vorstellen. Daher fangen wir damit an, den Optionsfeldern einen eindeutigeren und besseren Namen zu geben.

 

  1. TCEFORM.tt_content {<br />layout {<br />altLabels {<br />3 = Blauer Hintergrund - rechte Spalte<br />}<br />}<br />}<br />

 

Die Labelbezeichnung 3 überschreibt in unserem Fall die vorherige Bezeichnung "Layout 3". Dies kann für alle anderen Layout ebenfalls gemacht werden.

Optionsfelder für Layout umbenennen

 

Nun muss im TypoScript - Setup noch das Verhalten des Layout berücksichtigt werden. In meinem Beispiel ändere ich die Eigenschaften für das wrappen des CE TEXT.

 

  1.  tt_content {<br /> text {<br /> 20 ><br /> 20 = CASE<br /> 20 {<br /> key.field = layout
  2.  0 = TEXT<br /> 0 {<br /> field = bodytext<br /> required = 1
  3.  parseFunc = < lib.parseFunc_RTE
  4.  editIcons = tt_content:bodytext, rte_enabled<br /> editIcons.beforeLastTag = 1<br /> editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
  5.  prefixComment = 2 | Text:<br /> }
  6.  1 < .0<br /> 2 < .0<br /> 3 < .0<br /> 3.wrap = <div class="teaserliste">|</div><br /> }<br /> }<br /> }

In Zeile 3 löschen wir die Anweisungen, welche auf das normale CE zutreffen. Dann legen wir uns in Zeile 4 ein CASE - Objekt an, um das Datenbankfeld "layout" ab zufragen (Zeile 6) und entsprechend reagieren zu können.

Zeile 8 bis 20 entspricht der ursprünglichen Konfiguration der von uns gelöschten Ebene 20. Danach kopieren wir die Ebene 0 auf die anderen Ebenen (Zeile 21 - 24). Zeilen 25 legen wir endlich unseren Wrap an, damit der Layoutschalter funktioniert bzw. sich von den anderen unterscheidet.

 

Layout - Standard
Layout - "Blauer Hintergrund - rechte Spalte"

 

Nachtrag:

Zusätzlich zu diesem Thema, habe ich einen PodCast von Jens Hoffmann und Arnd (Tips'n'Tricks: Using the page "Layout" field) gefunden, in welchem erklärt wird, wie man das Layout Field ebenfalls für Seiten benutzen kann.



Gravatar: Hähnl

Super Tipp, hat mir den Tag gerettet. Vielen Dank.

Hähnl schrieb am 05.06.2011
Gravatar: Ole

Besser finde ich es einfach eine zusätzliche Klasse auszugeben - so habe ich das gelöst: # Layout als Klasse ausgeben tt_content.stdWrap.innerWrap.cObject.default{ 15.noTrimWrap = | class="| | 17 = TEXT 17.dataWrap = layout-{field:layout}" } Ausgabe dann z.B.: ... Über TCEFORM.tt_content.layout... wie bei Dir dann den layout-{id} Klassen einen Namen geben und die Klassen im Stylesheet entsprechend formatieren. Vorteil: Neue Klassen müssen nur im TCEFORM und im Stylesheet definiert werden - die TypoScript Ausgabe muss nicht angefasst werden. Grüße, Ole

Ole schrieb am 04.11.2011
Gravatar: Jacco

Nice 1, Ole! It adds a class to the frame, very usable.

Jacco schrieb am 10.02.2012

Mein Kommentar

Zurück

 
Design downloaded from free website templates.