Sie sind hier:   

Wie Sie ab TYPO3 9.5 die Symfony Expression Language Condition Abfrage benutzen

Ab der TYPO3 Version 9.5 wurde die Symfony Expression Language bei den Typoscript Conditions eingeführt. Da dies noch relativ neu in der TYPO3-Welt ist, besonders für die alten Hasen der TYPO3-Szene, werde ich an dieser Stelle einmal erläutern, was diese TYPO3-Conditions sind und wie man sie einsetzt. Ältere Conditions können migriert werden und für TYPO3 zukunftssicher gemacht werden.

Wofür werden in TYPO3 Conditions verwendet?

In TYPO3 werden Typoscript Conditions für Abfragen jeglicher Art verwendet. Beispielsweise können Conditions für folgende Abfragen benutzt werden:

  • Ist der aktuelle User im Frontend oder Backend eingeloggt?
  • Welchen Wochentag haben wir heute? (Oder Abfrage nach einem bestimmten Wochentag oder Datum)
  • Befindet sich in der URL ein bestimmter GET-Parameter?
  • Und noch vieles mehr ...

Im folgenden zeige ich mal ein paar Code-Beispiele auf, wie bei neueren TYPO3-Versionen (ab 9.5) die Typoscript Conditions verwendet werden und die allgemeine Schreib-Syntax sollte hiermit klar werden.

Code-Beispiele für Typoscript Conditions ab TYPO3 9.5

[page["uid"] in 18..45]
# This condition matches if current page uid is between 18 and 45
# Not possible with old syntax
[END]

[34 in tree.rootLineIds || 36 in tree.rootLineIds]
# This condition matches, if the page viewed is or is a subpage to page 34 or page 36
# Old Syntax: [PIDinRootline = 34,36]
[END]

[loginUser('*')]
# Old syntax: [loginUser = *]
[END]

[page["field"] == "value"]
# Old syntax: [page|field = value]
[END]

[loginUser('*') == false]
# Old syntax: [loginUser = ]
[END]

[getTSFE().id >= 10]
# Old Syntax [globalVar = TSFE:id >= 10]
[END]

[applicationContext == "Production" && userId == 15]
# This condition match if application context is "Production" AND logged in user has the uid 15
# Old syntax: [applicationContext = "Production"] && [loginUser = 15]
[END]

[request.getNormalizedParams().getHttpHost() == 'typo3.org']
# This condition matches if current hostname is typo3.org
# Old Syntax: [globalString = IENV:HTTP_HOST = www.typo3.org]
[END]

[like(request.getNormalizedParams().getHttpHost(), "*.devbox.local")]
# This condition matches if current hostname is any subdomain of devbox.local
# Old Syntax: [globalString = IENV:HTTP_HOST = *.devbox.local]
[END]

[page["uid"] in [1,2,3,4] || 5 in tree.rootLineIds]
# This condition matches if current page uid is either 1,2,3 or 4
# or if the current page is 5 or any subpage of 5
[END]

[backend.user.isLoggedIn]
# This condition matches if a backend user is logged in
# Old syntax: [globalVar = TSFE:beUserLogin = 1]
[END]
Neuer Kommentar

0 Kommentare