Statische Templates und dynamische Datenbank-Inhalte einbinden

Im folgenden Abschnitt werden die wichtigsten Content-Objekte beschrieben, die Typo3 zur Verfügung stellt. Die Objekte TEXT, TEMPLATE und FILE wurden im Detail-Modul Designvorlagen in TypoScript-Templates einbinden bereits dargestellt.
TEXT dient zum Darstellen von beliebigen Textelementen. Das TEMPLATE-Objekt dient zum Einbinden der Designvorlage und das FILE-Objekt kann zum Einfügen von Dateiinhalten verwendet werden. Bilder können in Typoscript mit dem Objekt IMAGE angesprochen werden. Die Eigenschaft file gibt den Pfad zum Bild an und die Eigenschaft width legt die Breite des Bildes fest.
page.10 = IMAGE
page.10 {
file = fileadmin/image.jpg
file.width = 200
}


Das Objekt CLEARGIF fügt eine leere gif-Datei ein. Diese Technik wird im HTML-Design gerne zur Formatierung der Seite verwendet.
page.10 = CLEARGIF
page.10.width = 100


Mit dem COA-Objekt können beliebige Content-Objekte verschachtelt (ähnlich einem Array) angelegt werden.
page.10 = COA
page.10.10 = TEXT
page.10.10.value = Wert1
page.10.20 = TEXT
page.10.20.value = Wert2


Die Anweisungen erzeugen an der Position 10 ein Feld aus Content-Objekten, das zwei Objekte vom Typ TEXT enthält. Um nun für einfache Darstellungen nicht lange und aufwendige Typoscript-Templates, die zweifelsohne aus vielen Content-Objekten bestehen würden, erstellen zu müssen, existieren in Typo3 bereits
vorgefertigte Templates. Diese so genannten „statischen Templates“ können in eigene Templates eingebunden werden. Sie können jedoch vom Entwickler nicht mehr abgeändert werden.

Eine Liste der verfügbaren statischen Templates ist in den Template Tools einsehbar. Wählen Sie in der DropDown-List den Menüpunkt Info/Modify aus und klicken Sie dann auf den Punkt "Click here to edit whole template record". In der Bildschirmmaske (siehe Abbildung rechts) befindet sich der Bereich "Include static" mit einer Liste der verfügbaren statischen Templates. Einige dieser Templates bringen einen kompletten Seitenaufbau mit, sind jedoch schwer an eigene Bedürfnisse anzupassen.
Die statischen Templates sind eher ungeeignet für den grundlegenden Seitenaufbau. Hier sind Designvorlagen die flexiblere Wahl. Das statische Template content(default) stellt jedoch eine Ausnahme dar, da es zur Ausgabe und Formatierung dynamischer Inhalte verwendet werden kann.

Mit einem Klick auf dieses Template wird es zum eigenen Template hinzugefügt. Um die Struktur betrachten zu können, wählen Sie aus dem Dropdown-Menü in den Template Tools den Menüpunkt Template Analyzer aus.


Die obige Abbildung zeigt die neue Struktur des erstellten Templates NEW SITE. Es erb wie die Abbildung zeigt von content(default), welches selbst wieder von drei anderen statischen Templates abhängt, die alle automatisch miteinbezogen werden. Das Template content(default) definiert ein Typoscript-Objekt mit dem Namen tt_content, über das die wichtigsten Seiteninhaltstypen vordefiniert sind.

Das Erzeugen und Einfügen der Inhaltselemente geschieht mit Hilfe des Typoscript-Objekts CONTENT innerhalb des selbst erstellten Templates. Im folgenden Beispiel wird an der Position 10 der Seite ein CONTENT-Objekt erzeugt und es wird festgelegt, aus welcher Tabelle der MySQL-Datenbank der Inhalt entnommen wird. In diesem Fall ist das die Standardtabelle in der Typo3 Content ablegt, nämlich tt_content.

page.10.marks.INHALT = CONTENT
page.10.marks.INHALT {
table = tt_content
select.orderBy = sorting
select.where = colPos=0
}


Für das Abfragestatement aus der Tabelle wird festgelegt, wie die Sortierung erfolgen soll und welche Datensätze selektiert werden sollen. Sortiert wird nach der Datenbank-Spalte sorting. Die letzte Zeile bewirkt, dass Inhaltselemente aus der „Normal Spalte“ (colPos=0) entnommen werden.
Bei der Verwendung des statischen Templates content(default) können die Seiteninhalte der Spalten Links, Normal, Rechts und Rand eingebunden werden. Dies ist mittels folgender Befehle möglich:

marks.INHALT < styles.content.getLeft
marks.INHALT < styles.content.get
marks.INHALT < styles.content.getRight
marks.INHALT < styles.content.getBorder


Mit dem < Operator kann das Inhaltselement der entsprechenden Spalte an die Stelle des Markers INHALT kopiert werden. Der < Operator erlaubt das Kopieren und Zuweisen von Content-Objekten, die an anderer Stelle im Template definiert worden sind. Dadurch entsteht ein Baum aus Content-Objekten, wie er vom Typoscript Object Browser (siehe weiter unten) visualisiert wird. Die Objekte styles.content.getLeft, styles.content.get, usw. sind im statischen Template content(default) definiert. Folgender Ausschnitt stammt aus diesem Template und zeigt wie eines dieser Content-Objekte mit einigen Voreinstellungen definiert ist.

styles.content.get = CONTENT
styles.content.get {
table = tt_content
select.orderBy = sorting
select.where = colPos=0
select.languageField = sys_language_uid
}


Darüber hinaus lässt sich das Aussehen der Inhalte durch das Ändern der vordefinierten Konstanten im Constant Editor bewerkstelligen. Dieser kann über das Dropdown-Menü in Template Tools ausgewählt werden. Hier werden alle Konstanten des ausgewählten Templates angezeigt und sind nun änderbar. Entweder erledigt man dies über den Constant Editor oder man ändert direkt die entsprechende Zeile im Feld Constants im Bereich Info/Modify.
Die nächste Abbildung zeigt die Maske des Constant Editors. Die meisten Konstanten sind selbsterklärend und dienen hauptsächlich zum Modifizieren des Aussehens der Inhaltselemente.



Der Object Browser (siehe unten) verschafft einen Überblick über die TypoScript-Objekthierarchie von Typo3. In einer Baumdarstellung ähnlich der Windows Registry werden alle Objekte und ihre Eigenschaften dargestellt. Durch Klick auf das Plussymbol eines Objekts werden alle Eigenschaften und Unterobjekte dargestellt. Die Abbildung zeigt auch das Objekt tt_content an. Es handelt sich dabei um ein CASE-Objekt, dass für die Verzweigung zu den verschiedenen Content-Typen zuständig ist. Bei diesen Typen des Objekts tt_content handelt es sich zum einen um grundlegende Inhaltselemente wie Text, Bild, Tabelle oder Auflistung. Darüber hinaus existieren auch komplexere Typen wie Anmeldeformulare oder Multimediaelemente.



In Typoscript können auch Bedienungen gestellt werden. Dabei handelt es sich um Kontrollstrukturen, die entscheiden ob Anweisungen ausgeführt werden oder nicht. Im folgenden Beispiel werden Netscape-Nutzer individuell angesprochen.

[browser = netscape]
page.20 = TEXT
page.20.value = Sie sind Netscape-Benutzer.
[GLOBAL]


Die Bedienung ist erfüllt, wenn der verwendete Browser ein Netscape-Browser ist. An der Position 20 wird ein TEXT-Objekt erzeugt und mit einem Wert belegt.
Nach der Ausführung der Anweisungen, die nur für Netscape-Benutzer gültig sind, wird wieder mit der Anweisung [GLOBAL] in den globalen Kontext zurückgeschaltet.

Dieses Modul sollte die grundlegende Funktionsweise von Templates darstellen und vor allem die Möglichkeiten aufzeigen, die statische Templates (im speziellen content(default) ) bieten. Wie die einzelnen Inhaltselemente eingesetzt und konfiguriert werden, wird im Modul Das Submodul "Seite" in Typo3 näher erläutert.