Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:about:conditions

TypoScript-Condition Cheatsheet

Conditions: Allgemeines

In TYPO3 9.4 wurde die symfony expression language eingeführt. Die alten, „klassischen“ Conditions gelten damit als deprecated und werden in TYPO3 v10 entfernt.

"Klassische" Conditions bis TYPO3 v9

// Beides muss zutreffen:
[Condition 1] && [Condition 2]
[Condition 1] AND [Condition 2]
 
// Eines von beiden muss zutreffen:
[Condition 1][Condition 2] 
[Condition 1] || [Condition 2] 
[Condition 1] OR [Condition 2] 
 
// Entweder Firefox ODER der Internet Explorer 8+:
[browser = firefox] || [browser = msie] && [version => 8]
 
// Weitere Auswahlmöglichkeiten dank 'ELSE':
[browser = msie]
page.10.value = Internet Explorer
[ELSE]
page.10.value = Kein Internet Explorer!
[END]
 
// Bedingung verneinen:
[Condition]
[else]
page.10.value = Füge direkt nach der Bedingung ein [else] ein.
[end]

Anmerkung: die browser-Conditions sind schon lange aus TYPO3 entfernt, sie dienen nur als nachvollziehbares Beispiel.

Conditions mit symfony expression language ab TYPO3 9.4

Mit der neuen Syntax können Conditions innerhalb der selben Klammer verknüpft werden. Die alte Schreibweise in zwei Blöcken ist zumindest in TYPO3 v9 weiterhin möglich, womöglich aber ebenfalls deprecated. Ich empfehle daher die neue Schreibweise.

// Beides muss zutreffen:
[Condition 1 && Condition 2]
 
// Eines von beiden muss zutreffen:
[Condition 1 || Condition 2] 
 
// Entweder eingeloggt ODER auf der englischen Version der Seite mit ID 75:
[frontend.user.isLoggedIn == 1 || getTSFE().id == 75 && siteLanguage("title") == "English"]
 
// Weitere Auswahlmöglichkeiten dank 'ELSE':
[loginUser('*')]
page.10.value = Der Nutzer ist angemeldet.
[ELSE]
page.10.value = Der Nutzer ist nicht angemeldet.
[END]
 
// Bedingung verneinen:
[frontend.user.isLoggedIn != 1]
 
// Neu: Zahlenraum zwischen 18 und 45:
[page["uid"] in 18..45]

Es gibt noch einige Möglichkeiten mehr, um Bedingungen abzufragen:
Offizielle Condition-Dokumentation
Derzeit ist diese Dokumentation noch ausbaufähig.


Conditions: Beispiele

Sprachwahl

// "Klassische" Condition bis TYPO3 v9:
[globalVar = GP:L = 1]
 
// Ab TYPO3 9.4 - muss übereinstimmen mit Site Configuration:
[siteLanguage("locale") == "en_US.UTF-8"]
[siteLanguage("title") == "English"]

Mit Get-Parameter: z.B. &print=1

// "Klassische" Condition bis TYPO3 v9:
[globalVar = GP:print > 0]
 
// Ab TYPO3 9.4:
[request.getQueryParams() ['print'] > 0]

Einzelne Seite OHNE Unterseiten

// "Klassische" Conditions bis TYPO3 v9:
[globalVar = TSFE:id=17, TSFE:id=24] 
// ODER 
[globalVar = TSFE:page|pid=17, TSFE:page|pid=24]
 
// Ab TYPO3 9.4:
[page["uid"] == 17]
[page["uid"] in [17,24]]
[getTSFE().id == 17]
[getTSFE().id in [17,24]]

Seiten-ID UND deren Unterseiten

// "Klassische" Condition bis TYPO3 v9:
[PIDinRootline = 17, 24]

NUR Unterseiten der angegebenen Seiten-ID, nicht die gewählte Seite selbst

// "Klassische" Condition bis TYPO3 v9:
[PIDupinRootline = 17, 24]

Ebene auf der rootline. 0 ist root

// "Klassische" Condition bis TYPO3 v9:
[treeLevel = 0,2]

Domain

// "Klassische" Conditions bis TYPO3 v9:
[globalString = IENV:HTTP_HOST = subdomain*]
[globalString = IENV:HTTP_HOST = www.example.org]
 
// Ab TYPO3 9.4:
[request.getNormalizedParams().getHttpHost() == 'www.example.org']
[like(request.getNormalizedParams().getHttpHost(), '*.test')]

Protokoll

// Ab TYPO3 9.4:
[request.getNormalizedParams().isHttps() == false]

Seiteneigenschaften abfragen (nur FE)

// "Klassische" Condition bis TYPO3 v9:
[globalVar = TSFE:page|backend_layout = 1]
 
// Ab TYPO3 9.4:
[page["backend_layout"] == 'pagets__2_columns_33_66']

Seiteneigenschaften abfragen (FE und BE)

// "Klassische" Condition bis TYPO3 v9:
[page|backend_layout = 1]

Benutzergruppen

// "Klassische" Conditions bis TYPO3 v9:
[usergroup = *]
[usergroup = 1,2]
 
// Ab TYPO3 9.4:
[usergroup("1,2")]

Frontend-Benutzer

// "Klassische" Conditions bis TYPO3 v9:
[loginUser = *]
[loginUser = 1,2]
 
 
// Ab TYPO3 9.4:
// Als beliebiger Frontend-Benutzer angemeldet:
[loginUser('*')]
[frontend.user.isLoggedIn == 1]
 
//Als ein bestimmter Frontend-Benutzer angemeldet:
[frontend.user.userId == 2]
 
// Als einer von mehreren aufgeführten Frontend-Benutzern angemeldet:
[loginUser('1,2')]
[frontend.user.userId in [1,2]]
 
// Aktuell nicht am Frontend angemeldet:
[loginUser('*') == false]

Benutzername

// "Klassische" Condition bis TYPO3 v9:
[globalString = TSFE:fe_user|user|username = johndoe]

Frontendbenutzer im Backend eingeloggt?

// "Klassische" Condition bis TYPO3 v9:
[globalVar = TSFE : beUserLogin > 0]
 
// Ab TYPO3 9.4:
[getTSFE().beUserLogin]

Auszulesende Konstante größer als 10

// "Klassische" Condition bis TYPO3 v9:
[globalVar = LIT:10 < {$konstante}]

Eigene Funktion

// "Klassische" Condition bis TYPO3 v9:
[userFunc = Funktionsname(Parameter)]

Ist Extension installiert?

// "Klassische" Condition bis TYPO3 v9:
[userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('extkey')]

Quelle: mbless.de

Werte aus Site Configuration auslesen

// Ab TYPO3 9.4:
[site("identifier") == "mysite"]
[site("base") == "http://local.test/"] 
typo3/about/conditions.txt · Zuletzt geändert: 2018/11/01 13:52 von admin