Wie funktioniert TypoScript?

TypoScript ist eine Konfigurationssprache vom TYPO3 CMS. Es beeinflusst alle Bereiche im TYPO3 System. Im Backend lässt sich durch TypoScript die Oberfläche für alle oder bestimmte Benutzer beeinflussen. Im Frontend hat es direkten Einfluss auf die Ausgabe der TYPO3 Inhaltselemente und Seitentemplates.

TypoScript ist auf PHP Ebene ein einfaches, wenn auch sehr großes, Array. Dieses Array wird von TYPO3 durchlaufen. Es werden neue Objekte erstellt und Konfigurationsparametern übergeben.

Hier ein einfaches Beispiel:

page = PAGE
page.10 = TEXT
page.10.value = Hello World
page.10.stdWrap.wrap = <h2>|</h2>

Das sind 4 Zeilen in TypoScript um ein PAGE - Objekt zu erstellen. Innerhalb dieses PAGE - Objektes gibt es an der Stelle Nr. 10 ein TEXT - Objekt. Dieses TEXT - Objekt hat den Wert: "Hello World". Das TEXT - Objekt lässt sich noch weiter konfigurieren.
Um die HTML Ausgabe zu beeinflussen, gibt es das Objekt: stdWrap. Dieses Objekt hat eine Eigenschaft: wrap. Hier kann man HTML Code einfügen der den Wert von TEXT, also in der Eigrnschaft: value, umschließt.
Die HTML Ausgabe der obigen Konfiguration wird wie folgt sein:

<h2>Hello World</h2>

Innerhalb vom TYPO3 System werden die TypoScript Angaben, wie bereits erwähnt, in ein PHP Array umgewandelt. Für das obige Beispiel sieht das zugehörige PHP Array wie folgt aus:

$data['page'] = 'PAGE';
$data['page.']['10'] = 'TEXT';
$data['page.']['10.']['value'] = 'Hello World';
$data['page.']['10.']['stdWrap.']['wrap'] = '<h2>|</h2>';

TYPO3 erstellt im Index: page ein PAGE - Objekt. Dieses PAGE - Objekt bekommt das Array: $data['page.'] als Konfigurationsarray übergeben. Dort bekommt es die Anweisung im Index: 10 ein TEXT Objekt zu erstellen. Dieses TEXT - Objekt bekommt widerrum das Array: $data['page.']['10.'] als Konfigurationsarray übergeben.

Wenn du mit TypoScript arbeitest, dann ist es gut zu verstehen, was im Hintergrund passiert. Es gibt noch viele andere Objekte die mit TypoScript erstellt werden können. Die interne funktionsweise ist die gleiche.

Was sind die wichtigsten TypoScript Objekte?

  • PAGE - Konfiguration einer kompletten Seitenausgabe (z.B. HTML, XML, JSON)
  • TEXT - Einfache Ausgabe von Text
  • RECORDS - Ausgabe von beliebigen Inhaltselementen
  • FLUIDTEMPLATE - Konfiguration eines TYPO3 Templates auf Basis von Fluid
  • USER - Beliebige Konfiguration, wie externe PHP Skripte oder Extbase Extensions
  • COA - TypoScript Array von weiteren TypoScript Objekten
  • CASE - Eine PHP Switch Anweisung in TypoScript

Gibt es Abfragen in TypoScript?

TypoScript besteht nicht nur aus Objekten und reflektiert ein PHP Array, sondern man kann in TypoScript auch Abfragen erstellen. Diese Abfragen werden in PHP als IF - Anweisungen umgesetzt.
Eine Bedingung wird immer in eckigen Klammern gesetzt und endet mit [END] oder [GLOBAL]. Ich empfehle die [END] - Anweisung, weil es von der Formulierung ab klarsten ist.

Eine einfache IF - Anweisung in TypoScript sieht wie folgt aus:

[page["uid"] == 2]

// do something

[END]

Ab der Version 9 hat sich das TypoScript entscheidend geändert. TYPO3 nutzt ab dieser Version die Expression Language von symfony. Dadurch stehen verschiedene Objekte bzw. Funktionen innerhalb der TypoScript Conditions bzw. Bedingungen zur Verfügung. Im folgenden ein Auszug von den wichtigsten Objekten und Funktionen:

  • applicationContext - Dient zur Trennung von Produktiv- und Arbeitsumgebungen
  • page - Datensatz aus der Datenbanktabelle: pages der aktuellen Seite
  • frontend - Objekt mit Informationen zum Frontend inkl. des Frontend Benutzers
  • request - Funktion um Informationen aus dem aktuellen Request zu lesen
  • getTSFE() - Funktion zum Zugriff auf das globale Array: $GLOBALS['TSFE']
  • loginUser - Funktion zur Feststellung ob ein Benutzer eingeloggt ist
  • usergroup - Funktion zur Feststellung der Benutzergruppe des eingeloggten Benutzers
  • siteLanguage - Funktion um Informationen der aktuellen Sprache zu bekommen