条件

参考

  • 条件、特に条件の構文についての詳しい説明は、 Core API の TypoScript Syntax の章 を参照してください。
  • TypoScriptには、条件を作成するための "if" function 関数もあります。

説明

symfonyの表現言語 はTYPO3 9.4以降、フロントエンドとバックエンドの両方でTypoScript条件のために実装されている。

アップグレード

既存の条件は変数および/または関数として利用可能であるが、すでに非推奨としてマークされていた。 そのため、TYPO3 9で古い構文を使用する際には、非推奨のメッセージを期待してください。 既存の条件はバージョン10の早い段階で削除される。 もしあなたの条件が今まで何をしていたのか知りたい場合は、 このドキュメントの古いバージョン を見てください。

ヒント

Symfonyの表現言語に完全に移行できない場合、機能フラグ [SYS][features][TypoScript.strictSyntax] を無効にするには、設定 -> インストール時のオプションの設定、もしくは LocalConfiguration.php で直接設定します。

参考

変数

以下の変数が利用可能です。値はコンテキストに関連しています。

applicationContext

Variable
applicationContext
Type
String
Description

Current application context as string.

See t3coreapi:bootstrapping-context.

Beispiel
[applicationContext == "Development"]

page

Variable
page
Type
Array
Description
Current page record as array.
Example
[page["uid"] == 2]

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:

[{$foo.bar} == 4711]

If constant is a string put constant in quotes:

["{$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:

[tree.level == 0]
tree.rootLine
Variable
tree.rootLine
Type
Array
Description
Array of arrays with uid and pid.
Example
[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:

[2 in tree.rootLineIds]
tree.rootLineParentIds

バージョン 10.3 で追加: This implements the old PIDupinRootline condition within the Symfony expression language, see t3core:Changelog/10.3/Feature-88962-Re-implementOldPIDupinRootlineTypoScriptCondition

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:

[2 in tree.rootLineParentIds]

backend

Variable
backend
Type
Object
Description
Object with backend information (available in BE only).
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:

[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:

[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:

[backend.user.userId == 5]
backend.user.userGroupList
Variable
backend.user.userGroupList
Type
String
Description
Comma list of group UIDs
Example
[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
[frontend.user.isLoggedIn]
frontend.user.userId
Variable
.user.userId
Type
Integer
Description
UID of current user
Example
[frontend.user.userId == 5]
frontend.user.userGroupList
Variable
frontend.user.userGroupList
Type
String
Description
Comma list of group UIDs
Example
[like(","~frontend.user.userGroupList~",", "*,1,*")]

workspace

バージョン 10.3 で追加: t3core:Changelog/10.3/Feature-90203-MakeWorkspaceAvailableInTypoScriptConditions

Variable
workspace
Type
Object
Description
object with workspace information
workspace.workspaceId

バージョン 10.3 で追加: t3core:Changelog/10.3/Feature-90203-MakeWorkspaceAvailableInTypoScriptConditions

Variable
.workspaceId
Type
Integer
Description
id of current workspace
Example
[workspace.workspaceId == 0]
workspace.isLive

バージョン 10.3 で追加: t3core:Changelog/10.3/Feature-90203-MakeWorkspaceAvailableInTypoScriptConditions

Variable
workspace.isLive
Type
Boolean
Description
True if current workspace is live
Example
[workspace.isLive]
workspace.isOffline

バージョン 10.3 で追加: t3core:Changelog/10.3/Feature-90203-MakeWorkspaceAvailableInTypoScriptConditions

Variable
workspace.isOffline
Type
Boolean
Description
True if current workspace is offline
Example
[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
[typo3.version == "9.5.5"]
typo3.branch
Variable
typo3.branch
Type
String
Description
TYPO3_branch (e.g. 9.4)
Example
[typo3.branch == "9.5"]
typo3.devIpMask
Variable
typo3.devIpMask
Type
String
Description
$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']
Example
[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
[request.getQueryParams()['skipSessionUpdate'] == 1]
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
[request.getParsedBody()['foo'] == 1]
request.getHeaders()
Function
request.getHeaders()
Parameter
Custom
Type
Array
Description
Provides all values from request headers.
Example
[request.getHeaders()['Accept'] == 'json']
[request.getHeaders()['host'][0] == 'www.typo3lexikon.de']
request.getCookieParams()
Function
request.getCookieParams()
Parameter
Custom
Type
Array
Description
Provides all available cookies.
Example
[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: docs.typo3.org
isHttps()
Returns boolean whether SSL was used.
getRequestHost()
Example: docs.typo3.org
getRequestHostOnly()
Example: docs.typo3.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://typo3.org/typo3/index.php?route=%2Fajax%2Fsystem-information%2Frender
getRequestScript()
Example: https://typo3.org/typo3/index.php
getRequestDir()
Example: https://typo3.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: typo3.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. typo395.ddev.local/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
[request.getNormalizedParams().isHttps()]
[request.getNormalizedParams().getHttpHost() == "typo395.ddev.local"]
request.getPageArguments()
Function
request.getPageArguments()
Parameter
None
Type
Array
Description
Get current PageArguments object with resolved route parts from enhancers.
Example

[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

True if day of current month is 7:

[date("j") == 7]

True if day of current week is 7:

[date("w") == 7]

True if day of current year is 7:

[date("z") == 7]

True if 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

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 has two parameters:

The first parameter
Is the array to traverse
The second parameter
Is the path to traverse
Example

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

[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

Check whether IP matches:

[ip("172.18.*")]

Check whether IP matches configured devIp:

[ip("devIP")]

compatVersion

Function
compatVersion
Parameter
String
Type
Boolean
Description
Compares against the current TYPO3 branch.
Example
[compatVersion("9.5")]

Is same as:

[compatVersion("9.5.0")]

Another example:

[compatVersion("9.5.1")]

loginUser

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

Any logged in user:

[loginUser('*')]

User with uid 1:

[loginUser(1)]

User 1, 3 or 5:

[loginUser('1,3,5')]

Not logged in:

[loginUser('*') == false]

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:

[getTSFE().type == 98]

getenv

Function
getenv
Parameter
String
Description
PHP function: getenv
Example
[getenv("VIRTUAL_HOST") == "docs.typo3.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:

[feature("TypoScript.strictSyntax") === false]

usergroup

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:

[usergroup("*")]

Usergroup 12:

[usergroup("12")]

Usergroup 12, 15 or 18:

[usergroup("12,15,18")]

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']:

[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:

[site("identifier") == "typo395"]

Matches if site base host:

[site("base").getHost() == "docs.typo3.org"]

Base path:

[site("base").getPath() == "/"]

Rootpage uid:

[site("rootPageId") == 1]

Configuration property:

[site("configuration")["enabled"] == true]

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")
  • siteLanguage("twoLetterIsoCode")
  • siteLanguage("hreflang")
  • siteLanguage("direction")
  • siteLanguage("fallbackType")
  • siteLanguage("fallbackLanguageIds")
Example

Example, match if siteLanguage locale = foo:

[siteLanguage("locale") == "de_CH"]

Example, match if siteLanguage title = Italy:

[siteLanguage("title") == "Italy"]