Konstanten in TypoScript verwenden

Die Verwendung von TypoScript-Konstanten erhöht die Flexibilität. Durch Vererbung in TypoScript lassen sich Konstanten auch als auch Variablen nutzen.

Motivation

In einem TypoScript-Template lassen sich im CONSTANTS-Bereich Konstanten definieren, die man im SETUP-Bereich verwenden kann. Durch das Prinzip der Vererbung in TypoScript funktioniert das auch über mehrere Templates hinweg. Konstanten sind sehr nützlich, wenn es darum geht, den TypoScript-Code flexibel zu halten.

Beispiel

Die Syntax bei der Definition und der Verwendung von Konstanten ist immer die Selbe: Im CONSTANTS-Bereich des Template legt man einen Namen für die Konstante fest und weist dieser einen Wert zu:

Definition von Konstanten in TypoScript TypoScript, Bereich CONSTANTS
# 'baseUrl' enthält die Domain der Website
baseUrl = http://www.jochenfroehlich.com/

# 'id_homepage' enthält die UID der Startseite
id_homepage = 2

Im SETUP-Bereich eines beliebigen Templates unterhalb des Templates, in dem die Konstanten definiert wurden, können diese Werte dann eingebunden werden.

Angenommen, unsere beiden Konstanten baseUrl und id_homepage wurden im TypoScript-Template der Startseite auf oberster Ebene definiert, so können die Werte in jedem beliebigen Template im darunter liegenden Seitenbaum verwendet werden.

Das Einbinden einer Konstanten im SETUP-Bereich sieht folgendermaßen aus:

Verwenden von Konstanten in TypoScript TypoScript, Bereich SETUP
# Verwendung von 'baseUrl' in einem Metatag (absolute URL zu einem Stylesheet)
page = PAGE
page.headerData.10 = TEXT
page.headerData.10.value = <link rel="stylesheet" href="{$baseUrl}/fileadmin/css/style.css" type="text/css" />

# Verwendung von 'id_homepage' in einer Bedingung (Condition)
[globalVar = TSFE:id={$id_homepage}]
# diesen Code nur auf der Startseite ausführen
[global]

Best Practice

Welche praktische Anwendung gibt es für diese beiden Konstanten?

Angenommen, es gibt zwei TYPO3-Systeme: Ein Livesystem, das von Redakteuren gepflegt und erweitert wird. Ein Testsystem, welches auf einer anderen Domain läuft und nicht die selben UIDs für bestimmte Seiten hat (beim Anlegen neuer Seiten auf dem Livesystem erhöht sich der Zähler für die Seiten-IDs, das Testsystem bekommt davon nichts mit).

Durch die Verwendung unserer beiden Konstanten ist es nun möglich, die jeweiligen Werte in getrennten CONSTANTS-Bereichen zu speichern (einen auf dem Testsystem und den anderen auf dem Livesystem) und den selben SETUP-Bereich auf beiden Systemen zu haben.

Die Konstante baseUrl macht es auch sehr einfach, ein System auf eine andere Domain umzuziehen: Es muss nur an einer einzigen Stelle der Name der Domain geändert werden.

Neben der gezeigten Konstante id_homepage können natürlich auch die UIDs weiterer Seiten als Konstanten definiert werden. Praktisch ist dies meist bei Conditions (Bedingungen), der special Eigenschaft von Menüs oder auch bei Zielen für einzelne Links.

Auch zur Anzeige von Übersetzungen in TypoScript lassen sich Konstanten hervorragend verwenden.

Konstante als Variable verwenden

Statt der Bezeichnung "Konstante" würde der Begriff "Variable" besser passen, da ihre Werte in Templates auf jeder Seite neu definiert werden können. Dies lässt sich zum Beispiel dazu verwenden, ein Inhaltselement auf bestimmten Seiten mit einer Condition ein- und auszublenden:

"Variable Konstante" definieren TypoScript, Bereich CONSTANTS
# Element standardmäßig nicht anzeigen
# Diese Definition steht im Root-Template auf oberster Ebene
show_element = 0
Wert einer Variable in Bedingung prüfen TypoScript, Bereich SETUP
# Element anzeigen, wenn 'show_element' einen Wert größer als 0 (Null) hat
# Diese Bedingung ist Teil des Root-Templates auf oberster Ebene
[globalVar = LIT:0<{$show_element}]
10 = TEXT
10.value = Lorem ipsum ...
[global]

Die Angaben im SETUP-Bereich des Root-Templates werden auf alle darunterliegenden Seiten vererbt.

Legt man nun auf einer beliebigen Unterseite ein Template an und setzt in dessen CONSTANTS-Bereich den Wert von show_element auf 1, so wird auf dieser Seite (und all ihren Unterseiten) das Inhaltselement in der Condition angezeigt. Setzt man auf einer Unterseite den Wert wieder auf 0 (Null), so wird das Inhaltselement versteckt.