Werte aus diversen Quellen in TypoScript auslesen
Um in TypoScript Werte aus verschiedenen Quellen, wie GET/POST oder dem Seitenbaum auszulesen, gibt getText und data.
getText
getText ist keine Funktion, wie es der Name vermuten lässt, sondern ein Datentyp in TypoScript. Es ist das Schweizer Taschenmesser um an Daten aus verschiedenen Quellen zu kommen. Mögliche Quellen sind unter anderem:
- GET/POST
- Seitenbaum
- Register
- Session
- Seitensprache
- Datenbank
Wie getText funktioniert
Die allgemeine Syntax ist
typoscriptPath = <key> : <code>
Der linke Teil <key> ist die Quelle der Information bzw. der auszulesenden Wertes und der rechte Teil <code> ist Pfad, Pointer zu dem konkreten Wert innerhalb der Quelle.
Der <code> Teil kann als Trennzeichen | beinhalten, um beispielsweise in assoziativen Arrays Schlüssel anzusprechen.
Ein einfaches Beispiel um den Benutzernamen des aktuellen eingeloggten Frontendbenutzers zu erhalten:
lib.username = TSFE : fe_user|user|username
Wir speichern hier im TypoScriptpfad: lib.username den Benutzernamen aus dem globalen Array: TSFE. In PHP würde diese Zeile wie folgt aussehen:
$username = $GLOBALS['TSFE']->fe_user->user['username']
Je nachdem, welchen <code> man nutzt, kann es auch andere Trennzeichen geben.
Für den Fall, dass ein Wert den man ausliest auch leer (Leerstring, leeres Array) sein kann und man in diesem Fall diese leere Information nicht nutzen möchte, sondern eine Alternative. Dann kann man der doppelte Slash // als Steuerzeichen dafür nehmen.
Mit ihm kann man sozusagen eine IF - ELSE - Bedingung auf der Prüfung !empty(...) schreiben.
Beispiel:
lib.foo.data = field : header // field : title // field : uid
In diesem Beispiel liest man den Wert: header der aktuellen TYPO3 Seite aus. Falls dieser leer ist, dann wird das Feld: title ausgelesen und falls auch dieser leer sein sollte, dann wird das Feld: uid genommen.
Ich denke, damit ist es nun klar wie getText funktioniert. Du kannst mit diversen <code> alle möglichen Informationen aus dem TYPO3 System auslesen und in TypoScriptpfade speichern. Je nach TypoScript Objekt, was hinter dem Pfad steht. Können diese Informationen entweder weiterverarbeitet oder im Frontend ausgegeben werden.
Im folgendenden noch ein paar Beispiele. Es befinden sich weitere Beispiele in der offiziellen Dokumentation.
GET/POST auslesen
Die Requestparameter aus den globalen PHP Arrays: $_GET oder $_POST lassen sich so auslesen.
lib.request.pageUid= GP : id
lib.exampleArray= GP : example|keyOfArray
Seitenbaum
Informationen aus dem Seitenbaum lassen sich beispielsweise mit diesen Codes machen.
leveltitle, leveluid, levelmedia
lib.pageTitle = leveltitle : 1
Liest den Seitentitel der ersten Seite auf der ersten Ebene der Rootline aus.
lib.pageMedia = levelmedia : -2, slide
Liest die zugewiesenen Medien der Seite aus die direkt unterhalb der aktuellen Seite ist. Falls diese Seite keine Medien hat, dann wird die Rootline bis zum Root durchgegangen. Es werden dann die Medien zugewiesen aus der nächsten Seite die Mieden hat.
Das rekursive Durchlaufen der Rootline bewirkt der Befehl slide.
lib.pageIdOfRootPage = leveluid : 0
Liest die Seiten ID der Rootseite aus.
Register
Das Register ist ein Speicherstack (PHP Array) der in TYPO3 aus Extbase, also PHP, oder mit TypoScript befüllt und ausgelesen werden kann.
In PHP ist esgreift man wie folgt darauf zu:
$color = $GLOBALS['TSFE']->register['color']
in TypoScript geht das wie folgt:
lib.color = register : color
Session
Der Zugriff aus die Frontendsession ist genauso einfach, wie bei dem Register. Bei beiden handelt es sich um PHP Arrays.
lib.foo.data = session : shop_cart|itemCount
Die Session greift hier auf den Schlüssel: shop_cart zu, was wiederum ein assoziatives Array ist mit dem weiteren Schlüssel itemCount.
Seitensprache
Es ist nicht selten, dass du auf die aktuelle Sprache in TypoScript zugreifen möchtest. Das geht ebenfalls via getText / data. Hier ein Beispiel:
lib.navigationTitle = TEXT
lib.navigationTitle.data = siteLanguage:navigationTitle
Weitere Eigenschaften von siteLanguage sind unter anderem:
- base
- languageId
- locale
- typo3Language
- websiteTitle
Datenbank
Ein gutes Beispiel für die Mächtigkeit von TypoScript ist, dass man sogar auf die Datenbank zugreifen kann - ohne MySQL Anweisungen schreiben zu müssen. Hier ein Beispiel:
lib.headerOfElement = DB : tt_content:234:header
Man kann auch dynamische Werte setzen, bspw. aus dem GET/POST - Request:
lib.headerOfElement = DB : tt_content:{GP : myContentId}:header
Fazit
Du siehst, TypoScript ist unglaublich flexibel und umfangreich. Ein Hauptgrund dafür ist das Objekt: getText / data, das die Schnittstelle ist, um an Daten aus unterschiedlichen Quellen zu kommen.
Wenn du mehr über TypoScript erfahren möchtest, dann schaue dir die verwandten Links und Quellen an.