Conditions

Frontend TypoScript conditions offer a way to conditionally change TypoScript based on current context. Do not confuse conditions with the "if" function, which is a stdWrap property to act on current data.

See also

Have a look at the TypoScript syntax condition chapter for the basic syntax of conditions.

The Symfony expression language tends to throw warnings when sub-arrays are checked in a condition that do not exist. Use the traverse function to avoid this.

applicationContext

Variable

applicationContext

Type

String

Description

The current application context as a string. See Application context.

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

# Any context that is "Production" or starts with "Production"
# (for example, Production/Staging").
[applicationContext matches "/^Production/"]

page

Variable

page

Type

Array

Description

All data of the current page record as array.

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"]

tree

Variable

tree

Type

Object

Description

Object with tree information.

tree.level

Variable

tree.level

Type

Integer

Description

The current tree level.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Check, if the page is on level 0:
[tree.level == 0]

tree.pagelayout

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).

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Using backend layout records
[tree.pagelayout == 2]

# Using the TSconfig provider of backend layouts
[tree.pagelayout == "pagets__Home"]

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 root line.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Check, if page with uid 2 is inside the root line
[2 in tree.rootLineIds]

tree.rootLineParentIds

Variable

tree.rootLineParentIds

Type

Array

Description

An array with parent UIDs of the root line.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Check, if the page with UID 2 is the parent of a page inside the root line
[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 the current backend user is administrator.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Evaluates to true, if the current backend user is administrator
[backend.user.isAdmin]

backend.user.isLoggedIn

Variable

backend.user.isLoggedIn

Type

Boolean

Description

True, if the current backend user is logged in.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Evaluates to true, if a backend user is logged in
[backend.user.isLoggedIn]

backend.user.userId

Variable

backend.user.userId

Type

Integer

Description

UID of the the current backend user.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Evaluates to true, if the user UID of the current logged-in backend
# user is equal to 5
[backend.user.userId == 5]

backend.user.userGroupIds

Variable

backend.user.userGroupIds

Type

array

Description

Array of user group IDs assigned to the current backend user.

Context

Frontend, backend

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

backend.user.userGroupList

Variable

backend.user.userGroupList

Type

String

Description

Comma-separated 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.

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 the current frontend user is logged in.

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

frontend.user.userId

Variable

frontend.user.userId

Type

Integer

Description

The UID of the current frontend 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

Variable

frontend.user.userGroupList

Type

String

Description

Comma-separated 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

workspace.workspaceId

Type

Integer

Description

UID of the current workspace.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Check, if in live workspace
[workspace.workspaceId == 0]

workspace.isLive

Variable

workspace.isLive

Type

Boolean

Description

True, if the current workspace is the live workspace.

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

workspace.isOffline

Variable

workspace.isOffline

Type

Boolean

Description

True, if the 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 (for example, 12.4.5)

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

typo3.branch

Variable

typo3.branch

Type

String

Description

TYPO3 branch (for example, 12.4)

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

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"]

date()

Function

date()

Parameter

String

Type

String / Integer

Description

Get the current date in the given format. See the PHP date function as a reference for the possible usage.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# True, if the day of the current month is 7
[date("j") == 7]

# True, if the day of the current week is 7
[date("w") == 7]

# True, if the day of the current year is 7
[date("z") == 7]

# True, if the current hour is 7
[date("G") == 7]

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
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Search a string with * within another string
[like("fooBarBaz", "*Bar*")]

# Search string with single characters in between, using ?
[like("fooBarBaz", "f?oBa?Baz")]

# Search string using regular expression
[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 and suppresses a PHP warning when sub-arrays do not exist. 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
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Traverse query parameters of current request along tx_news_pi1[news]
[request && traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]

Tip

Checking for the request object to be available before using traverse() may be necessary, for example, when using Extbase repositories in CLI context (as Extbase depends on TypoScript and on the command line is no request object available). This avoids the error Unable to call method "getQueryParams" of non-object "request".

compatVersion()

Function

compatVersion()

Parameter

String

Type

Boolean

Description

Compares against the current TYPO3 branch.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# True, if the current TYPO3 version is 12.4.x
[compatVersion("12.4")]

True, if the current TYPO3 version is 12.4.5
[compatVersion("12.4.5")]

getTSFE()

Function

getTSFE()

Parameter

Object

Description

Provides access to TypoScriptFrontendController $GLOBALS['TSFE']. This function can directly access methods of TypoScriptFrontendController. This class is target of a mid-term refactoring. It should be used with care since it will eventually vanish in the future.

Using the getTSFE() function, developers have to ensure that "TSFE" is available before accessing its properties. A missing "TSFE", for example, in backend context, does no longer automatically evaluate the whole condition to false. Instead, the function returns null, which can be checked using either [getTSFE() && getTSFE().id == 17] or the null-safe operator [getTSFE()?.id == 17].

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# True, if the current page UID is 17. Use the page variable instead
[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 the current state of feature toggles.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# True, if the feature toggle for enforcing the Content Security Policy
# in the frontend is enabled
[feature("security.frontend.enforceContentSecurityPolicy") === true]

ip()

Changed in version 13.0: This function is only available in TypoScript frontend context. For migration hints see the changelog.

Function

ip()

Parameter

String

Type

Boolean

Description

Value or constraint, wildcard or regular expression possible; special value: "devIP" (matches 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]

request()

Deprecated since version 12.3: Using this function in page TSconfig or user TSconfig conditions is deprecated. Such conditions will stop working with TYPO3 v13 and will then always evaluate to false. For migration hints see the changelog.

Function

request()

Parameter

Custom

Description

Allows to fetch information from current request.

Tip

Checking for the request object before using in a condition may be necessary, for example, when using Extbase repositories in CLI context (as Extbase depends on TypoScript and on the command line is no request object available). This avoids, for example, the error Unable to call method "getQueryParams" of non-object "request".

request.getQueryParams()

Function

request.getQueryParams()

Parameter

Custom

Type

Array

Description

Allows to access GET parameters from current request.

Assuming the following query within url:

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

then the following array would be provided:

Key: route

Value: /ajax/system-information/render

Key: token

Value: 5c53e9b715362e7b0c3275848068133b89bbed77

Key: skipSessionUpdate

Value: 1

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Safely check the query parameter array to avoid error logs in case key
# is not defined. This will check if the GET parameter
# tx_news_pi1[news] in the URL is greater than 0:
[request && traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]

request.getParsedBody()

Function

request.getParsedBody()

Parameter

Custom

Type

Array

Description

Provide all values contained in the request body, for example, in case of submitted form via POST, the submitted values.

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

request.getHeaders()

Function

request.getHeaders()

Parameter

Custom

Type

Array

Description

Provide all values from request headers.

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

[request && 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 available cookies.

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

request.getNormalizedParams()

Function

request.getNormalizedParams()

Parameter

Custom

Type

Array

Description

Provides access to the \TYPO3\CMS\Core\Http\NormalizedParams object. Have a look at the normalized parameters of the request object for a list of the available methods.

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

[request && 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 the current \TYPO3\CMS\Core\Routing\PageArguments object with the resolved route parts from enhancers.

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

# True, if current page type is 98
[request && request.getPageArguments()?.getPageType() == 98]

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, for example, by extensions. Use | to dig deeper into the structure for stored values.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Match, if the session has the value 1234567 in the structure :php:`$foo['bar']`:
[session("foo|bar") == 1234567]

site()

Function

site

Parameter

String

Description

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

Available information:

site("identifier")

Returns the identifier of the current site as a string.

site("base")

Returns the base of the current site as a string.

site("rootPageId")

Returns the root page UID of the current site as an integer.

site("languages")

Returns an array of the available languages for the current site. For deeper information, see siteLanguage().

site("allLanguages")

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

site("defaultLanguage")

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

site("configuration")

Returns an array with the available configuration for the current site.

Example
EXT:site_package/Configuration/TypoScript/setup.typoscript
# Site identifier
[site("identifier") == "my_site"]

# Match site base host
[site("base").getHost() == "www.example.org"]

# Match base path
[site("base").getPath() == "/"]

# Match root page UID
[site("rootPageId") == 1]

# Match a configuration property
[traverse(site("configuration"), "myCustomProperty") == true]

siteLanguage()

Function

siteLanguage()

Parameter

String

Value

Mixed

Description

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

Available information:

siteLanguage("languageId")

Returns the language ID as an integer.

siteLanguage("locale")

Returns the current locale as a string, for example en_GB or de_DE.

siteLanguage("base")

Returns the configured base URL as a string.

siteLanguage("title")

Returns the internal human-readable name for this language as a string.

siteLanguage("navigationTitle")

Returns the navigation title as a string.

siteLanguage("flagIdentifier")

Returns the flag identifier as a string, for example gb.

siteLanguage("typo3Language")

Returns the language identifier used in TYPO3 XLIFF files as a string, for example default or the two-letter language code.

siteLanguage("hreflang")

Changed in version 12.4: This option is not relevant anymore for regular websites without rendering hreflang tag, but is now customizable, and has a proper fallback.

Returns the language information for the hreflang tag as a string.

siteLanguage("fallbackType")

Returns the language fallback mode as a string, one of fallback, strict or free.

siteLanguage("fallbackLanguageIds")

Returns the list of fallback languages as a string, for example 1,0.

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]

loginUser()

Changed in version 13.0: This function has been removed. Use the variables frontend.user and backend.user instead. For migration hints see the changelog.

usergroup()

Changed in version 13.0: This function has been removed. Use the variables frontend.user and backend.user instead. For migration hints see the changelog.