Conditions

See also

Reference

Variables

The following variables are available. The values are context related.

applicationContext

Variable

applicationContext

Type

String

Description

Current application context as string.

See Application context.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[applicationContext == "Development"]

Any context that is "Production" or starts with "Production" (eg Production/Staging").

EXT:site_package/Configuration/TypoScript/setup.typoscript
[applicationContext matches "/^Production/"]

page

Note

page is only available in the frontend context. As the TypoScript setup may be loaded in some backend modules or the CLI context, it is considered best practice to always guard the property by using the function traverse()

Variable

page

Type

Array

Description

All data of the current page record as array. To find out which fields are available, you can enable the debug mode in the TYPO3 backend which will display the field names.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Check single page uid
[traverse(page, "uid") == 2]
# Check list of page uids
[traverse(page, "uid") in [17,24]]
# Check list of page uids NOT in
[traverse(page, "uid") not in [17,24]]
# Check range of pages (example: page uid from 10 to 20)
[traverse(page, "uid") in 10..20]

# Check the page backend layout
[traverse(page, "backend_layout") == 5]
[traverse(page, "backend_layout") == "example_layout"]

# Check the page title
[traverse(page, "title") == "foo"]

Constant

Variable

{$foo.bar}

Type

Constant

Description

Any TypoScript constant is available like before. Depending on the type of the constant you have to use different conditions.

Example

If constant is an integer:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[{$foo.bar} == 4711]

If constant is a string put constant in quotes:

EXT:site_package/Configuration/TypoScript/setup.typoscript
["{$foo.bar}" == "4711"]

tree

Variable

tree

Type

Object

Description

Object with tree information.

tree.level
Variable

tree.level

Type

Integer

Description

Current tree level.

Example

Check whether page is on level 0:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[tree.level == 0]
tree.pagelayout

New in version 11.0.

Variable

tree.pagelayout

Type

Integer / String

Description

Check for the defined backend layout of a page including the inheritance of the field Backend Layout (subpages of this page). The condition is enabled for frontend and backend.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Using backend_layout records
[tree.pagelayout == 2]
   page.1 = TEXT
   page.1.value = Layout 2
[END]

# Using TSconfig provider of backend layouts
[tree.pagelayout == "pagets__Home"]
   page.1 = TEXT
   page.1.value = Layout Home
[END]
tree.rootLine
Variable

tree.rootLine

Type

Array

Description

Array of arrays with uid and pid.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[tree.rootLine[0]["uid"] == 1]
tree.rootLineIds
Variable

tree.rootLineIds

Type

Array

Description

An array with UIDs of the rootline.

Example

Check whether page with uid 2 is inside the root line:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[2 in tree.rootLineIds]
tree.rootLineParentIds

New in version 10.3: This implements the old PIDupinRootline condition within the Symfony expression language, see Feature: #88962 - Re-implement old PIDupinRootline TypoScript condition

Variable

tree.rootLineParentIds

Type

Array

Description

An array with parent UIDs of the root line.

Example

Check whether page with uid 2 is the parent of a page inside the root line:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[2 in tree.rootLineParentIds]

backend

Variable

backend

Type

Object

Description

Object with backend information.

backend.user
Variable

backend.user

Type

Object

Description

Object with current backend user information.

backend.user.isAdmin
Variable

backend.user.isAdmin

Type

Boolean

Description

True if current user is admin

Example

Evaluates to true if current BE-User is administrator:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[backend.user.isAdmin]
backend.user.isLoggedIn
Variable

backend.user.isLoggedIn

Type

Boolean

Description

true if current user is logged in

Example

Evaluates to true if an BE-User is logged in:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[backend.user.isLoggedIn]
backend.user.userId
Variable

backend.user.userId

Type

Integer

Description

UID of current user

Example

Evaluates to true if user uid of current logged in BE-User is equal to 5:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[backend.user.userId == 5]
backend.user.userGroupIds
Variable

backend.user.userGroupList

Type

array

Description

Array of user group ids of the current backend user

Context

Frontend, Backend

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[2 in backend.user.userGroupIds]
backend.user.userGroupList

New in version 11.2: Starting with TYPO3 v11.2 backend.user.userGroupIds, an array has been added. Use this instead of like expressions to test for the user group of the current backend user.

Variable

backend.user.userGroupList

Type

String

Description

Comma list of group UIDs

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[like(","~backend.user.userGroupList~",", "*,1,*")]

frontend

Variable

frontend

Type

Object

Description

object with frontend information (available in FE only)

frontend.user
Variable

frontend.user

Type

Object

Description

Object with current frontend user information.

frontend.user.isLoggedIn
Variable

frontend.user.isLoggedIn

Type

Boolean

Description

True if current user is logged in

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[frontend.user.isLoggedIn]
frontend.user.userId
Variable

.user.userId

Type

Integer

Description

UID of current user

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[frontend.user.userId == 5]
frontend.user.userGroupIds
Variable

frontend.user.userGroupList

Type

array

Description

Array of user group ids of the current frontend user

Context

Frontend

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[4 in frontend.user.userGroupIds]
frontend.user.userGroupList

New in version 11.2: Starting with TYPO3 v11.2 frontend.user.userGroupIds, an array has been added. Use this instead of like expressions to test for the user group of the current frontend user.

Variable

frontend.user.userGroupList

Type

String

Description

Comma list of group UIDs

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[like(","~frontend.user.userGroupList~",", "*,1,*")]

workspace

Variable

workspace

Type

Object

Description

object with workspace information

workspace.workspaceId
Variable

.workspaceId

Type

Integer

Description

id of current workspace

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[workspace.workspaceId == 0]
workspace.isLive
Variable

workspace.isLive

Type

Boolean

Description

True if current workspace is live

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[workspace.isLive]
workspace.isOffline
Variable

workspace.isOffline

Type

Boolean

Description

True if current workspace is offline

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[workspace.isOffline]

typo3

Variable

typo3

Type

Object

Description

object with TYPO3 related information

typo3.version
Variable

typo3.version

Type

String

Description

TYPO3_version (e.g. 9.4.0-dev)

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[typo3.version == "9.5.5"]
typo3.branch
Variable

typo3.branch

Type

String

Description

TYPO3_branch (e.g. 9.4)

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[typo3.branch == "11.5"]
typo3.devIpMask
Variable

typo3.devIpMask

Type

String

Description

$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[typo3.devIpMask == "172.18.0.6"]

Functions in all contexts

Functions take over the logic of the old conditions which do more than a simple comparison check. The following functions are available in any context:

request

Function

request

Parameter

Custom

Description

Allows to fetch information from current request.

request.getQueryParams()
Function

request.getQueryParams()

Parameter

Custom

Type

Array

Description

Allows to access all available GET-Parameters from current request.

Assuming the following query within url:

route=%2Fajax%2Fsystem-information%2Frender&token=5c53e9b715362e7b0c3275848068133b89bbed77&skipSessionUpdate=1

the following array would be provided:

Key: route

Value: /ajax/system-information/render

Key: token

Value: 5c53e9b715362e7b0c3275848068133b89bbed77

Key: skipSessionUpdate

Value: 1

Example

Check if query parameter skipSessionUpdate equals 1:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getQueryParams()['skipSessionUpdate'] == 1]

Safely check the query parameter array to avoid error logs in case key is not defined (see traverse). This will check if the GET parameter tx_news_pi1[news] in the URL is greater than 0:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]
request.getParsedBody()
Function

request.getParsedBody()

Parameter

Custom

Type

Array

Description

Provides all values contained in the request body, e.g. in case of submitted form via POST, the submitted values.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getParsedBody()['foo'] == 1]
request.getHeaders()
Function

request.getHeaders()

Parameter

Custom

Type

Array

Description

Provides all values from request headers.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getHeaders()['Accept'] == 'json']
   page.10.value = Accepts json
[END]

[request.getHeaders()['host'][0] == 'www.example.org']
   page.20.value = The host is www.example.org
[END]
request.getCookieParams()
Function

request.getCookieParams()

Parameter

Custom

Type

Array

Description

Provides all available cookies.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getCookieParams()['foo'] == 1]
request.getNormalizedParams()
Function

request.getNormalizedParams()

Parameter

Custom

Type

Array

Description
Provides access to NormalizedParams object which contains a bunch of methods:
getHttpHost()

Example: www.example.org

isHttps()

Returns boolean whether SSL was used.

getRequestHost()

Example: www.example.org

getRequestHostOnly()

Example: www.example.org

getRequestPort()

Returns the port, mostly 80 or 443, but can be whatever is configured.

getScriptName()

Example: /typo3/index.php

getRequestUri()

Example: /typo3/index.php?route=%2Fajax%2Fsystem-information%2Frender

getRequestUrl()

Example: https://example.org/typo3/index.php?route=%2Fajax%2Fsystem-information%2Frender

getRequestScript()

Example: https://example.org/typo3/index.php

getRequestDir()

Example: https://example.org/typo3/

isBehindReverseProxy()

Returns boolean.

getRemoteAddress()

IP Adress of client, in case of docker this could be 172.18.0.6.

getScriptFileName()

Example: /var/www/html/public/typo3/index.php

getDocumentRoot()

Example: /var/www/html/public

getSiteUrl()

Example: example.org

getSitePath()

Example: /

getSiteScript()

Example: typo3/index.php?route=%2Fajax%2Fsystem-information%2Frender

getPathInfo()

Ist bei mir leer gewesen

getHttpReferer()

If enabled, delivers the prior visited url, e.g. example.org/typo3/index.php

getHttpUserAgent()

Example: Mozilla/5.0 (X11; Linux x86_64) Chrome/73.0.3683.86 Safari/537.36

getHttpAcceptEncoding()

Example: gzip, deflate

getHttpAcceptLanguage()

Example: de-DE,de;q=0.9

getRemoteHost()

Name of client pc.

getQueryString()

Example: route=%2Fajax%2Fsystem-information%2Frender

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getNormalizedParams().isHttps()]
   page.10.value = HTTPS is being used
[END]

[request.getNormalizedParams().getHttpHost() == "example.org"]
   page.10.value = The host is "example.org"
[END]
request.getPageArguments()
Function

request.getPageArguments()

Parameter

None

Type

Array

Description

Get current PageArguments object with resolved route parts from enhancers.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[request.getPageArguments().get('foo_id') > 0]

Allows migration from old condition syntax using [globalVar = GP:singlepartner > 0] to [request.getPageArguments().get('singlepartner') > 0].

date

Function

date

Parameter

String

Type

String / Integer

Description

Get current date in given format.

See PHP date function as reference for possible usage.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[date("j") == 7]
   page.10.value = True if day of current month is 7
[END]

[date("w") == 7]
   page.10.value = True if day of current week is
[END]

[date("z") == 7]
   page.10.value = True if day of current year is 7
[END]

[date("G") == 7]
   page.10.value = True if current hour is 7
[END]

like

Function

like

Parameter

String, String

Type

Boolean

Description

This function has two parameters:

The first parameter

Is the string to search in

The second parameter

Is the search string

Example

Search a string with * within another string:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[like("fooBarBaz", "*Bar*")]

Search string with single characters in between, using ?:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[like("fooBarBaz", "f?oBa?Baz")]

Search string using regular expression:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[like("fooBarBaz", "/f[o]{2,2}[aBrz]+/")]

traverse

Function

traverse

Parameter

Array, String

Type

Custom

Description

This function gets a value from an array with arbitrary depth. It has two parameters:

The first parameter

Is the array to traverse

The second parameter

Is the path to traverse

In case the path is not found in the array, an empty string is returned.

Example

Traverse query parameters of current request along tx_news_pi1[news]:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]

ip

Function

ip

Parameter

String

Type

Boolean

Description

Value or Constraint, Wildcard or RegExp possible special value: devIP (match the devIPMask).

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[ip("172.18.*")]
   page.10.value = Your IP matches "172.18.*"
[END]

[ip("devIP")]
   page.10.value = Your IP matches the configured devIp
[END]

compatVersion

Function

compatVersion

Parameter

String

Type

Boolean

Description

Compares against the current TYPO3 branch.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[compatVersion("11.5")]
   page.10.value = You are using TYPO3 v11.5
[END]

Is same as:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[compatVersion("11.5.0")]
   page.10.value = You are using TYPO3 v11.5
[END]

Another example:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[compatVersion("11.5.1")]
   page.10.value = You are using TYPO3 v11.5
[END]

loginUser

Note

This method is deprecated in TYPO3 v12.4. The transition can be done in existing TYPO3 v11 projects already. You should use either frontend.user to test for frontend user state (available in frontend TypoScript), or backend.user (available in frontend TypoScript and TSconfig).

Function

loginUser

Parameter

String

Type

Boolean

Description

value or constraint, wildcard or RegExp possible

Context dependent, uses BE-User within TSconfig, and FE-User within TypoScript.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[loginUser('*')]
   # matches any login user
   page.10.value = You are logged in!
[END]

[loginUser(1)]
   page.10.value = Your frontend user has the uid 1
[END]

[loginUser('1,3,5')]
   page.10.value = Your frontend user has the uid 1, 3 or 5
[END]

[loginUser('*') == false]
   page.10.value = You are logged out!
[END]

getTSFE

Function

getTSFE

Parameter

Object

Description

Provides access to TypoScriptFrontendController ($GLOBALS['TSFE'])

Conditions based on getTSFE() used in a context where TSFE is not available will always evaluate to false.

Example

Current typeNum:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[getTSFE().type == 98]

Current page id equals to 17. However, page should be preferred:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[getTSFE().id == 17]

getenv

Function

getenv

Parameter

String

Description

PHP function: getenv

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[getenv("VIRTUAL_HOST") == "www.example.org"]

feature

Function

feature

Parameter

String

Description

Provides access to feature toggles current state.

Example

Check if feature toggle for strict TypoScript syntax is enabled:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[feature("TypoScript.strictSyntax") === false]

usergroup

Note

This method is deprecated in TYPO3 v12.4. The transition can be done in existing TYPO3 v11 projects already. You should use either frontend.user to test for frontend user state (available in frontend TypoScript), or backend.user (available in frontend TypoScript and TSconfig).

Function

usergroup

Parameter

String

Value

Boolean

Description

Value or constraint, wildcard or RegExp possible

Allows to check whether current user (FE or BE) is part of the expected usergroup.

Example

Any usergroup:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[usergroup("*")]
   page.10.value = You are logged in and belong to some usergroup.
[END]

[usergroup("12")]
   page.10.value = You are in the usergroup with uid 12.
[END]

[usergroup("12,15,18")]
   page.10.value = You are in the usergroup with uid 12, 15 or 18.
[END]

Functions in frontend context

The following functions are only available in frontend context:

session

Function

session

Parameter

String

Value

Mixed

Description

Allows to access values of the current session. Available values depend on values written to the session, e.g. by extensions.

Use | to dig deeper into the structure for stored values.

Example

Example, matches if session has value 1234567 in structure $foo['bar']:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[session("foo|bar") == 1234567]

site

Function

site

Parameter

String

Description

Get value from site configuration, or null if no site was found or property does not exists.

Available Information:

site("identifier")

Returns the identifier of current site as string.

site("base")

Returns the base of current site as string.

site("rootPageId")

Returns the root page uid of current site as integer.

site("languages")

Returns array of available languages for current site. For deeper information, see siteLanguage.

site("allLanguages")

Returns array of available and unavailable languages for current site. For deeper information, see siteLanguage.

site("defaultLanguage")

Returns the default language for current site. For deeper information, see siteLanguage.

site("configuration")

Returns an array with all available configuration for current site.

Example

Site identifier:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[site("identifier") == "typo395"]

Matches if site base host:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[site("base").getHost() == "www.example.org"]

Base path:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[site("base").getPath() == "/"]

Rootpage uid:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[site("rootPageId") == 1]

Configuration property:

EXT:site_package/Configuration/TypoScript/setup.typoscript
[traverse(site("configuration"), "myCustomProperty") == true]

Warning

It might seem straight-forward to use site("configuration")["myCustomProperty"] to access configuration properties. However, if the property has not been set, this will trigger a runtime exception, and your log will fill up quickly. Using traverse will silence the error messages.

siteLanguage

Function

siteLanguage

Parameter

String

Value

Mixed

Description

Get value from siteLanguage configuration, or null if no site was found or property not exists.

Available information:

  • siteLanguage("languageId")

  • siteLanguage("locale")

  • siteLanguage("base")

  • siteLanguage("title")

  • siteLanguage("navigationTitle")

  • siteLanguage("flagIdentifier")

  • siteLanguage("typo3Language") : default or 2 letter language code

  • siteLanguage("twoLetterIsoCode") : 2 letter language code

  • siteLanguage("hreflang")

  • siteLanguage("direction")

  • siteLanguage("fallbackType")

  • siteLanguage("fallbackLanguageIds")

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
[siteLanguage("locale") == "de_CH"]
   page.10.value = This site has the locale "de_CH"
[END]

[siteLanguage("title") == "Italy"]
   page.10.value = This site has the title "Italy"
[END]