Alles was du über den Constants wissen musst

Mit Hilfe von Constants kannst du gleiche Werte in TypoScript einfach wiederverwenden. Der Redakteur kann diese einfach und sicher ohne TypoScript - Kenntnisse ändern.

TypoScript ist eine sehr umfangreiche und möchte Konfigurationsmöglichkiet in TYPO3. Über TypoScript lassen sich viele Faktoren beeinflussen. Zum Beispiel kannst du deine Extension parametrisieren und diese Parameter in den Konstanten - Editor auslagern, damit der Redakteur diese einfach und sicher ändern kann. Sinnvoll ist die Konfiguration über TypoScript dann, wenn es für deine gesamte Extension gilt oder allen Frontend Plugins Instanzen.

Die Constants kann man in TYPO3 auf zwei verschiedenen Arten angeben:

  1. constants.typoscript - Datei in einer Extension
  2. Constants - Feld eines TypoScript Templates

constants.typoscript

Diese Datei kann ein Frontend Plugin in TYPO3 haben und ist Aufgabe vom TYPO3 Entwickler zu erstellen und zu pflegen. 

Damit kann der Entwickler entscheiden, welche Teile seiner Extension und Frontend Plugins wie konfigurierbar sein sollen. Damit er nicht für jede Änderung gerufen werden muss, kann er so Kompetenzen auslagern und den TYPO3 Integrator und Redakteuren die Möglichkeit nehmen definierte Alternativen seiner Extension zu steuern.

Das Constants - Feld

Das Constants - Feld findet sich im TYPO3 Backend im TypoScript Template wieder:

Constants  - Feld im TypoScript Template

Die Eingabe der Constants im TypoScript Template ist die Aufgabe vom TYPO3 Integrator oder Entwickler. Dort können sehr schnell Anpassungen für eine Seite und seiner Unterseiten vorgenommen werden. Denn alle Änderungen vererben sich auf die Unterseiten automatisch.

Die Eingabe ist denkbar einfach:

plugin.tx_campusfirstextension_project.settings.layout = Spring
exampleConstant = Irgendein Beispieltext

Die Eingabe hat natürlich nur dann einen Effekt, wenn im TypoScript Setup die angesprochenen Konstanten wiederverwendet werden:

plugin.tx_campusfirstextension_project.settings.layout = {$plugin.tx_campusfirstextension_project.settings.layout}
plugin.tx_campusfirstextension_project.settings.exampleConstant = {$exampleConstant}

Die Konstanten spricht man, wie du oben sehen kannst, so an indem man den Konstantennamen mit {$...} umrahmt.

Darüber hinaus kann der TYPO3 Entwickler Konstanten im Konstanten Editor auslagern. Den Konstanten Editor findest du ebenfalls im Template Modul:

Konstanten Editor aufrufen

Hier bekommt nun der Redakteur die Möglichkeit die Konstanten sehr einfach und sicher zu bearbeiten. Es ist sicher, weil auf dieser Art und Weise keine Syntaxfehler in das TypoScript kommen und die Felder soweit konfiguriert werden können, dass nur bestimmte Werte zulässig sind.

Beispiele von Constants Feldtypen

Standardfeld

# cat=plugin.tx_campusfirstextension_project//a; type=string; label=Default storage PID
storagePid =

Ausgabe

Constants Feldtyp: Standard

Nur Zahlen

# cat=plugin.tx_campusfirstextension_project//a; type=int; label=Default storage PID
storagePid =

Ausgabe

Constants - Feldtyp: Int

Nur positive Zahlen

# cat=plugin.tx_campussecondextension_project//a; type=int+; label=Default storage PID
storagePid =

Ausgabe

Constants - Feldtyp: Int+

Zahlen mit logischen Segmenten

# cat=plugin.tx_campussecondextension_project//a; type=offset[Country,State,Number]; label=Phone number
phoneNumber =

Ausgabe

Constants - Feldtyp: Offset

Colorpicker

# cat=plugin.tx_campussecondextension_project//a; type=color; label=Color
color =

Ausgabe

Constants Feldtyp: Color

HTML Code umschließen (Wrap)

# cat=plugin.tx_campussecondextension_project//a; type=wrap; label=HTML code is wrapped around this content
wrap =

Ausgabe

Constants Feldtyp: Wrap

Liste

# cat=plugin.tx_campussecondextension_project//a; type=options[Layout 1=layout1,Layout 2=layout2,Layout 3=layout3]; label=Choose a layout
layout =

Ausgabe

Constants - Feldtyp: Options

Checkbox

# cat=plugin.tx_campussecondextension_project//a; type=boolean; label=Enable feature 1
enable =

Ausgabe

Constants - Feldtyp: Boolean

Kommentar

# cat=plugin.tx_campussecondextension_project//a; type=comment; label=This is just a comment
comment = Kommentarfeld ist ein boolean mit Werten Leerstring oder #

Ausgabe

Constants - Feldtyp: Comment

Benutzerdefiniertes Feld

Ein benutzerdefiniertes Feld ist ein Feld wo der TYPO3 Entwickler den HTML Code und die Logik für ein Feld selbst definieren kann. Dadurch ist jedes beliebige Feld denkbar.

Constants

# cat=plugin.tx_campussecondextension_project//a; type=user[Slavlee\CampusSecondextension\TypoScript\CustomField\MyCustomField->display]; label=Benutzerdefiniertes Feld
myCustomField =

UserFunc

namespace Slavlee\CampusSecondextension\TypoScript\CustomField;

class MyCustomField
{
    public function display(array $params)
    {
        return '<textarea cols="30" rows="5"></textarea>'; 
    }
}

Ausgabe

Constants - Feldtyp: User

Konstanteneditor strukturieren

Der Konstanteneditor lässt sich in 3 Stufen strukturieren damit der Backendbenutzer sich besser zurecht findet und der TYPO3 Entwickler logische Konfigurationsparameter gruppieren kann.

Die erste Stufe ist die Kategorie:

Constants

# cat=plugin.tx_campussecondextension_project

Konstanteneditor

Kategorie im Konstanteneditor

die zweite Stufe ist die Unterkategorie:

Constants

# cat=plugin.tx_campussecondextension_project/color/a; type=color; label=Primärfarbe auswählen
primary =

Ausgabe

Unterkategorie im Konstanten Editor

die dritte und letzte Stufe ist die Reihenfolge innerhalb einer Unterkategorie:

Constants

# cat=plugin.tx_campussecondextension_project/color/b; type=color; label=Sekundärfarbe auswählen
secondary =
        
# cat=plugin.tx_campussecondextension_project/color/a; type=color; label=Primärfarbe auswählen
primary =

Ausgabe

Reihenfolge bestimmten im Konstanten Editor

Kategorien umbenennen und neue Unterkategorien erstellen

Der Kategoriename ist standardmäßig die Bezeichnung die man hinter cat= angibt. Wenn man dort einen anderen Text haben möchte und den beispielsweise in einer Sprachdatei auslagern möchte, dann kann der Entwickler zu Beginn der constants.typoscript folgende Anweisung schreiben:

# customcategory=plugin.tx_campussecondextension_project=LLL:EXT:campus_secondextension/Resources/Private/Language/locallang_typoscript.xlf:plugin.tx_campussecondextension_project

In der Sprachdatei kann dann der entsprechende Text stehen:

<trans-unit id="plugin.tx_campussecondextension_project" resname="plugin.tx_campussecondextension_project">
  <source>Campus Second Extension</source>
</trans-unit>

Im Konstanten Editor wird dann der übersetzte Text angezeigt anstatt dem Bezeichner in der Konstante:

Kategorien im Konstanten Editor übersetzen

Das gleiche ist für die Unterkategorie möglich:

# customsubcategory=settings=LLL:EXT:campus_secondextension/Resources/Private/Language/locallang_typoscript.xlf:settings

# cat=plugin.tx_campussecondextension_project/settings/a; type=int+; label=Amount of entries per page
entriesCount =

In der Sprachdatei steht dann entsprechende:

<trans-unit id="settings" resname="settings">
  <source>Settings</source>
</trans-unit>

Die Anzeige im Konstanten Editor sieht dann wie folgt aus:

Unterkategorie im Konstanten Editor übersetzen

Puh! Das war ganz schön viel Inhalt.

Ich danke dir, dass du dieses Tutorial bis zum Ende durchgearbeitet hast. Du weisst jetzt wie mächtig der Konstanten Editor ist und wie du deinen Redakteuren die Möglichkeit geben kannst, Einfluss auf deine Extensions zu nehmen. Du hast gelernt, dass die Eingabe sicher ist und über mehrere Feldtypen definierbar ist. Die Möglichkeit den Konstanten Editor zu strukturieren in dem du deine Parameter in Kategorien und Unterkategorien gruppierst, gibt dir alle Möglichkeiten, dass die Backendbenutzer den Überblick nicht verlieren.

Ich denke so einfach hast du es noch in keinem anderen CMS gesehen.

Ich wünschte dir viel Spaß mit dem Konstanten Editor.