Konstanten in TypoScript verwenden
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:
# '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:
# 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:
# Element standardmäßig nicht anzeigen # Diese Definition steht im Root-Template auf oberster Ebene show_element = 0
# 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.