TYPO3 (Teil 30): TypoScript (2)

In diesem Tutorial werden die grundlegenden Syntaxformen von TypoScript gezeigt. Ohne die hier beschriebenen Dinge lassen sich keine TypoScript-Anwendungen erstellen. Daher bildet dieses Tutorial auch die Basis für alle noch kommenden in dieser Reihe. Los geht es mit einigen allgemeinen Hinweisen zum Umgang mit Objekten. Anschließend erfahrt ihr, was es mit den sogenannten Conditions auf sich hat und wie man diese effektiv nutzen kann.

Wir empfehlen:
TYPO3 CMS-Training

Zunächst aber noch einige allgemeine Hinweise zu den Objekten. Tatsächlich hält TYPO3 nämlich eine beachtliche Anzahl an Objekten bereit. Ein gängiges Beispiel dafür ist das HRULER-Objekt, über das sich horizontale Linien ausgeben lassen. Typische Eigenschaften einer Linie sind bekanntermaßen die Breite und die Farbe. Und genau das lässt sich mittels TypoScript abbilden.

page = PAGE
page.typeNum = 0
page.10 = HRULER
page.20 {
   lineThickness = 10
   lineColor = #000
}

Hier wird zunächst ein TypoScript-Objekt vom Typ HRULER erstellt. Dieses Objekt wird anschließend durch Eigenschaften genauer beschrieben.

 

Im Zusammenhang mit Objekten werden euch immer wieder verschiedene Begriffe begegnen, die eine kurze Betrachtung verdienen:

Objektart – Man kann explizit angeben, von welchem Typ ein Objekt ist. Tatsächlich kennt TypoScript eine Vielzahl unterschiedlicher Objekttypen wie beispielsweise IMAGE und TEXT.
Eigenschaft – In der TypoScript-Referenz ist festgelegt, welche Eigenschaften welche Objekttypen besitzen können. So kann man dem Objekttyp TEXT beispielsweise die Eigenschaft value zuweisen.
Wert – Eigenschaften können Werte zugewiesen werden. So könnte man beispielsweise der Eigenschaft value einen Text als Wert zuweisen.

Mit dem Gleichheitszeichen habt ihr im vorherigen Tutorial auch gleich den ersten Operator, nämlich den Zuweisungsoperator kennengelernt. Nun kennt TypoScript allerdings noch zahlreiche andere dieser Operatoren. So stellt TypoScript beispielsweise einen Operator zum Kopieren von Eigenschaften zur Verfügung.

page = PAGE
page{
  typeNum = 0
  10 = TEXT
  10.value = Willkommen bei PSD-Tutorials.de
  20 < .10
 }

 

Dank dieses Operators wird im vorherigen Beispiel die Zeichenkette Willkommen bei PSD-Tutorials.de kopiert und an der gewünschten Stelle eingefügt.

 

Bedingungen definieren

Tatsächlich lassen sich in TypoScript Bedingungen definieren, so wie man das auch von "echten" Programmiersprachen her gewohnt ist. Über solche Bedingungen können Aktionen ausgeführt werden, wenn eine Bedingung erfüllt/nicht erfüllt ist. So könnte man beispielsweise einen bestimmten Inhalt anzeigen, wenn ein Besucher mit dem Opera-Browser die Seite aufruft. Genau eine solche Anwendung zeigt das folgende Beispiel:

page = PAGE
page.typeNum = 0
page.10 = TEXT
[browser = opera]
page.10 {
   value = <h2>Du benutzt Opera!</h2>
}
[global]

Wird die Seite mit dem Opera-Browser aufgerufen, ergibt sich dieses Bild:

 

Verwendet man hingegen einen anderen Browser, sieht das folgendermaßen aus:

Die Ausgabe bleibt in diesem Fall leer, da die Bedingung nicht erfüllt ist.

Bedingungen sind in TypoScript in der Zeichenfolge [] eingeschlossen. Beendet werden Bedingungen über [Global]. Ist die Bedingung erfüllt, wird der Code, der innerhalb der Bedingung steht, ausgeführt.

Im ersten Beispiel blieb die Ausgabe der Seite leer, wenn ein Besucher die Seite nicht mit dem Opera-Browser aufgerufen hat. Das ist natürlich nicht immer ideal. Mittels einer else-Bedingung kann man TypoScript-Code ausführen, wenn eine zuvor definierte Bedingung nicht erfüllt ist.

 

Das gezeigte Beispiel kann man also folgendermaßen erweitern:

page = PAGE
page.typeNum = 0
page.10 = TEXT
[browser = opera]
page.10 {
   value = <h2>Du benutzt Opera!</h2>
}
[else]
page.10 {
  value = <h2>Du benutzt Opera nicht!</h2>
  value.case = upper
}
[global]

Ruft nun jemand mit einem anderen Browser die Seite auf, wird ein entsprechender Hinweis ausgegeben.

 

Achtet aber in jedem Fall darauf, die Bedingungen nicht innerhalb von geschweiften Klammern zu nutzen. Folgendes würde also nicht funktionieren:

page = PAGE
page.typeNum = 0
page.10 = TEXT
page.10 {
   [browser = opera]
  value = <h2>Du benutzt Opera!</h2>
   [global]
}

Es lassen sich auch mehrere Bedingungen miteinander kombinieren. Dafür gibt es verschiedene Operatoren. Auch hierfür zunächst ein Beispiel. Angenommen, ihr wollt eben nicht nur überprüfen, ob jemand die Seite mit Opera aufgerufen hat, sondern auch gleich noch das Betriebssystem abfragen:

page = PAGE
page.typeNum = 0
page.10 = TEXT
[browser = opera] && [system = win]
page.10 {
  value = <h2>Du benutzt Opera unter Windows!</h2>
}
[global]

 

In diesem Fall werden zwei Dinge kontrolliert.

• Ist es der Opera-Browser?
• Ist das Betriebssystem Windows?

Nur wenn tatsächlich beide Bedingungen erfüllt sind, erfolgt eine entsprechende Ausgabe.

Verwendet wurde in diesem Beispiel der UND-Operator &&. Alternativ dazu gibt es auch noch den ODER-Operator.

[browser = opera] || [browser = msi]

Dank dem kann man jetzt beispielsweise überprüfen, ob die Seite mit Opera oder aber dem Internet Explorer aufgerufen wird.

 

TypoScript stellt einige vordefinierte Bedingungen zur Verfügung. So kann man eben nicht nur das Betriebssystem und den Browser abfragen. Ebenso lässt sich beispielsweise auch überprüfen, ob ein Benutzer gerade im Backend der Seite angemeldet ist.

page = PAGE
page.typeNum = 0
page.10 = TEXT
[globalVar = TSFE : beUserLogin > 0] 
page.10 {
   value = <h2>Du bist ein Backend-Benutzer.</h2>
}
[global]

In diesem Fall erfolgt eine Ausgabe nur dann, wenn der Benutzer, der die Seite im Frontend aufruft, auch tatsächlich im Backend eingeloggt ist.

 

Praktisch ist eine solche Anwendung dann zum Beispiel, um bestimmte Funktionen für eingeloggte Backend-Benutzer im Frontend abzuschalten. So könnte man beispielsweise das sogenannte simulateStaticDocuments deaktivieren, um Links tatsächlich überprüfen zu können.

page = PAGE
page.typeNum = 0
page.10 = TEXT
[globalVar = TSFE : beUserLogin > 0] 
config.simulateStaticDocuments = 0
[global]

Ausführliche Informationen zu den angebotenen Möglichkeiten findet ihr auch auf der Seite http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.1.0/view/4/1/#id3526924. Sollten euch die dort angebotenen Varianten nicht genügen, könntet ihr eigene Bedingungen definieren. Verwendet wird dafür die Datei typo3conf/localconf.php. Wer sich mit diesem Thema befassen möchte, wird auf der Seite http://blog.bartlweb.net/2010/11/eigene-php-funktionen-in-typoscript-einbinden/ fündig.

Fazit

Was es mit den Objekten und Bedingungen auf sich hat, wurde gezeigt. Damit sind schon einmal grob die Grundlagen für die Arbeit mit TypoScript gelegt. In den nächsten Tutorials geht es nun um den praktischen Einstieg in die Sprache.

Wir empfehlen:
Dreamweaver-Video-Training

Unsere Empfehlung für dich

TYPO3 CMS-Training

TYPO3 CMS-Training

Du willst deine eigene Website erstellen und administrieren?

  • 8 Stunden Video-Trainings zum beliebten TYPO3 CMS 6
  • 36 Praxis-Lektionen in Text/Bild als PDF (über 400 Seiten)
  • Themeerstellung mit TypoScript
  • Blog, Forum, Multidomainfähigkeit, Mehrsprachigkeit, Benutzerverwaltung & Co.

Fazit: Deine eigene moderne Website mit anspruchsvollen Features kann kommen!

Zum Training