TypoScript von TemplaVoila auslagern
Motivation
Die Zentralisierung von Code ist eine wichtige Eigenschaft eines gut strukturierten Systems. Dies gilt bei der Programmierung in PHP ebenso wie bei der Erstellung von TypoScript-Templates.
Um einen besseren Überblick über TypoScript-Code, der in den Datenstrukturen von TemplaVoila benötigt wird zu bekommen, kann man diesen in ein externes Template auslagern.
Beispiel
In der nebenstehenden Grafik wird ein beispielhaftes Element in TemplaVoila erstellt. Es trägt den Namen 'field_content' und kann als eine Art Container weitere TYPO3-Inhaltselemente und Flexible Inhaltselemente (FCEs) von TemplaVoila beinhalten. Der Typ des Elements wird mit der Drop Down Box "Voreinstellungen Element" (siehe Markierung) festgelegt.
Hat man die Grundeinstellungen des Elements vorgenommen und speichert diese ab, so wird von TemplaVoila ein XML-Code erzeugt, der die Datenstruktur des Elements wiedergibt.
Der Abschnitt, der die Definition unseres - sehr einfachen - Elements 'field_content' beschreibt, ist im Folgenden dargestellt:
<field_content type="array"><tx_templavoila type="array"><title>Inhalt</title>
<sample_data type="array"><numIndex index="0"></numIndex>
</sample_data><eType>ce</eType>
10= RECORDS
10.source.current=1
10.tables = tt_content
</TypoScript><proc type="array"><stdWrap></stdWrap>
</proc><oldStyleColumnNumber type="integer">0</oldStyleColumnNumber>
</tx_templavoila><TCEforms type="array"><label>Inhalt</label>
<config type="array"><type>group</type>
<internal_type>db</internal_type>
<allowed>tt_content</allowed>
<size>5</size>
<maxitems>200</maxitems>
<minitems>0</minitems>
<multiple>1</multiple>
<show_thumbs>1</show_thumbs>
</config></TCEforms></field_content>
In den Zeilen 9 bis 11 wurde der TypoScript-Code generiert, der zur Darstellung der Inhaltselemente notwendig ist, die später einmal in diesem Element enthalten sein sollen. Dieser Code kann erweitert werden, wenn besondere Formatierungen oder eine gänzlich andere Darstellung gewünscht ist.
Stellen wir uns nun vor, dass es eine ganze Reihe an Seiten-Templates und FCEs in unserer TemplaVoila-basierten Website gibt: Das kann sehr schnell unübersichtlich werden, da sich der TypoScript-Code auf viele XML-Datenstrukturen verteilt.
Best Practice
Eine saubere und bessere Lösung dieses Problems ist, sämtlichen TypoScript-Code aus den XML-Datenstrukturen von TemplaVoila herauszunehmen und in ein oder mehrere externe TypoScript-Templates auszulagern. Der ausgelagerte Code wird dann über eine einzige Zuweisung in die jeweilige Datenstruktur eingefügt.
Die Vorteile der Auslagerung liegen auf der Hand:
- Der Code für alle TemplaVoila-Objekte ist an einer Stelle zusammengefasst und wird damit wesentlich übersichtlicher.
- Sie können den Code mit Ihrem gewohnten Editor bearbeiten.
- Die XML-Datenstruktur muss nicht geändert werden, wenn sich der TypoScript-Code verändert.
- Sie können die Vererbung in TypoScript nutzen.
Erstellen Sie einfach ein TypoScript-Template und tragen Sie dort den Code aus der Datenstruktur (alles zwischen den <TypoScript>-Tags) ein. Ersetzen Sie die Zahl '10' durch einen beliebigen Namen für den ausgelagerten Code.
Wir benutzen bei FCEs als Konvention nach "lib." immer "fce", den Namen des Elements (hier: "test") und den Namen des Feldes (hier: "content", wegen 'field_content'):
lib.fce_test.content = RECORDS lib.fce_test.content { source.current = 1 tables = tt_content wrap = <div class="fce-test">|</div> } # ... weiterer TypoScript Code für TemplaVoila-Elemente ...
Nur zu Demonstrationszwecken haben wir den ursprünglichen Code um einen "Wrap" erweitert. Natürlich sind weitaus komplexere Erweiterungen möglich
In der XML-Datenstruktur ersetzen Sie anschließend den ausgelagerten Code durch eine einfache Zuweisung:
<field_content type="array"> <tx_templavoila type="array"> <title>Inhalt</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>ce</eType> <TypoScript><![CDATA[ 10 < lib.fce_test.content ]]></TypoScript> <proc type="array"> <stdWrap></stdWrap> </proc> <oldStyleColumnNumber type="integer">0</oldStyleColumnNumber> </tx_templavoila> <TCEforms type="array"> <!-- weitere Definitionen hier weggelassen --> </TCEforms> </field_content>
Diese Vorgehensweise können Sie bei all Ihren Flexiblen Inhaltselementen und Seiten-Templates anwenden, die Sie mit TemplaVoila erstellen. Sie sollten bald merken, welche Erleichterung das Herausnehmen von TypoScript aus den XML-Strukturen mit sich bringt.
Weiterlesen
16.02.2012, 14:14
Besucher fanden diese Seite unter folgenden Suchbegriffen:
