T3 Campus T3 Campus

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.

Bereit mehr zu lernen?

Dann komme in meine TYPO3 Onlineschule

Als Mitglied des T3 Campus für TYPO3 Schulungen erhältst du eine einzigartige Lernplattform, um professionelle Webseiten mit TYPO3 zu erstellen. Egal, ob du ein Einsteiger, Umsteiger oder bereits erfahren bist – hier findest du die passenden Lernvideos für dich.

Kevin Chileong Lee

Gründer vom T3 Campus, TYPO3 Experte mit 10+ Jahren Erfahrung, TYPO3 Liebhaber.

Ich helfe dir dabei, deine Projekte in TYPO3 umzusetzen.

Insbesondere für TYPO3 Einsteiger biete ich zahlreiche kostenfreie Tutorials und kostenpflichtige Kurse rund um TYPO3 an.
Damit kannst du in wenigen Tagen auch ohne Vorkenntnisse deine erste TYPO3 Webseite erstellen und Erweiterungen programmieren.

Auf meinem YouTube-Kanal findest du viele praktische Beispiele und Videotutorials als auch allgemein Videos zu diversen TYPO3 Themen.

Neber den TYPO3 Tutorials und Kopiervorlagen, schreibe ich auch Artikel auf meinem Blog über diverse Themen und Fragen, die die meisten TYPO3 Einsteiger, haben.

Falls du ein TYPO3 Coaching suchst, dann stehe ich dir in einer 1:1 Trainingssession zur Verfügung.

Wenn du auf dem Laufenden sein möchtest über meine Projekte, dann abonniere den Newsletter.