Data / getText

The getText data type is some kind of tool box allowing to retrieve values from a variety of sources, for example from GET/POST variables, from registers, values from the page tree, items in the page menus, records from any database table, etc.

The general syntax is as follows:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = <key> : <code>
Copied!

where <key> indicates the source and <code> is some form of path or pointer to the value, which depends on the key used. The various keys and their possible codes are described below.

The code can contain pipe characters | to separate keys in a multidimensional array. This, for example, works with TSFE:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = TSFE : fe_user | user | username
Copied!

Some codes work with a different separator, which is documented right at the code. Spaces around the colon (:) are irrelevant. The key is case-insensitive.

By separating the value of getText with // (double slash) a number of codes can be supplied and getText will return the first one, which is not empty ("" or zero).

To get the content of the field "header". If "header is empty, "title" is retrieved. If "title" is empty as well, it finally gets the field "uid":

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = field : header // field : title // field : uid
Copied!

Properties

applicationcontext

New in version 13.0

applicationcontext

applicationcontext

Returns the current application context as string.

Example: Evaluate the current application context

Evaluate if the current application context is "Production":

EXT:site_package/Configuration/TypoScript/setup.typoscript
if {
    value.data = applicationcontext
    equals = Production
}
Copied!

asset

asset

asset

New in version 13.2

Local resources can be cache-busted. It is not necessary anymore to rename the asset when it is exchanged, forcing browsers to relod the file.

The getText asset function includes assets like images, CSS or JavaScript in a cache-busted way.

Depending on $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename'] the cache buster is applied as query string or embedded in the filename.

The result is the same like using argument useCacheBusting="true" in Uri.resource ViewHelper <f:uri.resource>.

Example: Display extension icon with cache buster

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.20 = TEXT
page.20 {
    value.stdWrap.data = asset: EXT:core/Resources/Public/Icons/Extension.svg
}
Copied!

cObj

cObj

cObj

For CONTENT and RECORDS cObjects that are returned by a select query, this returns the row number (1,2,3,...) of the current cObject record.

parentRecordNumber is the only key available.

Example: Get the number of the current cObject record

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = cObj : parentRecordNumber
Copied!

context

context

context

Access values from context API (see). If a property is an array, it is converted into a comma-separated list.

Syntax:

TypoScript Syntax
lib.foo.data = context:<aspectName>:<propertyName>
Copied!

Example: Retrieve current workspace ID

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10.data = context:workspace:id
page.10.wrap = You are in workspace: |
Copied!

current

current

current

current (gets the "current" value)

Example: Get the current value

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = current
Copied!

date

date

date
Default
d/m Y

Can be used with a colon and date-conf.

Example: Get the current time formatted dd-mm-yy

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = date : d-m-y
Copied!

DB

DB

DB
Syntax
DB : [table name] : [uid] : [field]

Value from database. Any record from a table in TCA can be selected here. Records marked as deleted will not return any value.

In contrast to other keys, colons are used here to get deeper into the structure, instead of pipes.

Example: Get a header field value of a record

Get the value of the header field of record with uid 234 from table tt_content:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = DB : tt_content:234:header
Copied!

Get the value of the header field of a record, whose uid is stored in a GET parameter myContentId:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data.dataWrap = DB : tt_content:{GP : myContentId}:header
Copied!

debug

debug

debug

Returns HTML-formatted content of the PHP variable defined by the keyword. Available keywords are rootLine, fullRootLine, data, register and page.

Example: Debug the current root-line

Outputs the current root-line visually in HTML:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = debug : rootLine
Copied!

field

field

field
Syntax
field : [field name from the current $cObj->data array in the cObject, multi-dimensional.]

This gives read access to the current value of an internal global variable determined by the given key.

  • As default the $cObj->data array is $GLOBALS['TSFE']->page (record of the current page)
  • In TMENU $cObj->data is set in a loop to the page-record for each menu item during its rendering process.
  • In CONTENT / RECORDS $cObj->data is set to the actual record
  • In GIFBUILDER $cObj->data is set to the data GIFBUILDER is supplied with.

Example: Get header data

Get content from $cObj->data['header']:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = field : header
Copied!

Example: Get data of a field

Get content from $cObj->data['fieldname']['level1']['level2']:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = field : fieldname | level1 | level2
Copied!

file

file

file
Syntax
file : [uid] : [property]

Retrieves a property from a file object (FAL) by identifying it through its sys_file UID. Note that during execution of the FILES cObject, it is also possible to reference the current file with current as UID like file : current : size.

The following properties are available: name, uid, originalUid, size, sha1, extension, mimetype, contents, publicUrl, modification_date, creation_date

Furthermore when manipulating references (such as images in content elements or media in pages), additional properties are available (not all are available all the time, it depends on the setup of references of the FILES cObject): title, description, link, alternative.

Additionally, any data in the sys_file_metadata table can be accessed too.

See the FILES cObject for usage examples.

Example: Get the size of a file

Get the file size of the file with the sys_file UID 17:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = file : 17 : size
Copied!

flexform

flexform

flexform
Syntax
flexform : [field containing flexform data].[property of this flexform]

Access values from FlexForms, for example inside of tt_content record. In contrast to most parts, deeper levels are accessed through dots, not pipes.

Example: Get a FlexForm value

Return the FlexForm value of given name:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = flexform : pi_flexform:settings.categories
Copied!

fullRootLine

fullRootLine

fullRootLine
Syntax
fullRootLine : [pointer, integer], [field name], ["slide"]

This property can be used to retrieve values from "above" the current page's root. Take the below page tree and assume that we are on the page "Here you are!". Using the levelfield property, it is possible to go up only to the page "Site root", because it is the root of a new (sub-)site. With fullRootLine it is possible to go all the way up to page tree root. The numbers between square brackets indicate to which page each value of pointer would point to:

- Page tree root [-2]
  |- 1. page before [-1]
    |- Site root (root template here!) [0]
      |- Here you are! [1]
Copied!

A "slide" parameter can be added just as for the levelfield property.

Example: Get the title of the previous page

Get the title of the page right before the start of the current website:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = fullRootLine : -1, title
Copied!

getenv

getenv

getenv

Value from PHP environment variables.

For a cached variation of this feature, please refer to getEnv.

Example: Get the HTTP referer

Get the environment variable HTTP_REFERER:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = getenv : HTTP_REFERER
Copied!

getIndpEnv

getIndpEnv

getIndpEnv
Syntax
getIndpEnv : <name>

Returns the value of a System Environment Variable denoted by name regardless of server OS, CGI/MODULE version etc. The result is identical to the $_SERVER variable in most cases. This method should be used instead of getEnv to get reliable values for all situations. The internal processing is handled by TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv()

Available names:

Name Definition Example or result
_ARRAY Return an array with all available key-value pairs for debugging purposes  
HTTP_ACCEPT_LANGUAGE language(s) accepted by client  
HTTP_HOST [host][:[port]] example.org:8080
HTTP_REFERER [scheme]://[host][:[port]][path] https://example.org:8080/typo3/32/temp/phpcheck/index.php/arg1/arg2/arg3/?arg1,arg2,arg3&p1=parameter1&p2[key]=value
HTTP_USER_AGENT client user agent  
PATH_INFO [path_info] /arg1/arg2/arg3/
QUERY_STRING [query] arg1,arg2,arg3&p1=parameter1&p2[key]=value
REMOTE_ADDR client IP  
REMOTE_HOST client host  
REQUEST_URI [path]?[query] /typo3/32/temp/phpcheck/index.php/arg1/arg2/arg3/?arg1,arg2,arg3&p1=parameter1&p2[key]=value
SCRIPT_FILENAME absolute filename of script  
SCRIPT_NAME [path_script] /typo3/32/temp/phpcheck/[index.php]
TYPO3_DOCUMENT_ROOT absolute path of root of documents  
TYPO3_HOST_ONLY [host] example.org
TYPO3_PORT [port] 8080
TYPO3_REQUEST_DIR [scheme]://[host][:[port]][path_dir]  
TYPO3_REQUEST_HOST [scheme]://[host][:[port]]  
TYPO3_REQUEST_SCRIPT [scheme]://[host][:[port]][path_script]  
TYPO3_REQUEST_URL [scheme]://[host][:[port]][path]?[query]  
TYPO3_REV_PROXY TRUE if this session runs over a well known proxy  
TYPO3_SITE_SCRIPT [script / Speaking URL] of the TYPO3 website  
TYPO3_SITE_URL [scheme]://[host][:[port]][path_dir] of the TYPO3 website frontend  
TYPO3_SSL TRUE if this session uses SSL/TLS (https)  

Example: Get the remote address

EXT:site_package/Configuration/TypoScript/setup.typoscript
# get and output the client IP
page = PAGE
page.10 = TEXT
page.10.stdWrap.data = getIndpEnv : REMOTE_ADDR
page.10.stdWrap.htmlSpecialChars = 1
Copied!

global

global

global
Syntax
global : [variable]

Deprecated, use GP, TSFE or getenv.

GP

GP

GP
Syntax
GP : [Value from GET or POST method]

Get a variable from $_GET or $_POST where a variable, which exists in both arrays, is returned from $_POST.

Example: Get the input value from query string

Get input value from query string &stuff=...

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = GP : stuff
Copied!

Get input value from query string &stuff[bar]=...

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = GP : stuff | bar
Copied!

level

level

level

Get the root line level of the current page.

Example: Get the root line level of the current page

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = level
Copied!

levelfield

levelfield

levelfield
Syntax
levelfield : [pointer, integer], [field name], ["slide"]

Like leveltitle but the field do be fetched from the record is configurable.

Example: Get a field from a page up in the root-line

Get the value of the user-defined field tx_myextension_myfield in the root line.

EXT:my_extension/Configuration/TypoScript/setup.typoscript
lib.foo.data = levelfield : -1, tx_myextension_myfield, slide
Copied!

Changed in version 13.2

Until TYPO3 v13 it was required to do additional configuration in $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] to use custom fields.

To stay compatible with both TYPO3 v12 and v13, add the following to your extensions ext_localconf.php:

EXT:my_extension/ext_localconf.php
<?php

declare(strict_types=1);

use TYPO3\CMS\Core\Information\Typo3Version;
use TYPO3\CMS\Core\Utility\GeneralUtility;

defined('TYPO3') or die();

$versionInformation = GeneralUtility::makeInstance(Typo3Version::class);
// TODO: Remove when dropping TYPO3 v12 support
if ($versionInformation->getMajorVersion() < 13) {
    $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] .= ',tx_myextension_myfield';
}
Copied!

levelmedia

levelmedia

levelmedia
Syntax
levelmedia : [pointer, integer], ["slide"]

Get the media field of a page in the root-line.

  • Use an absolute level with 0 or a positive integer.
  • With a negative integer got x levels up
  • The slide parameter slides until there is a non-empty value found.

leveltitle

leveltitle

leveltitle
Syntax
leveltitle : [pointer, integer], ["slide"]

Get the title of a page in the root-line.

  • Use an absolute level with 0 or a positive integer.
  • With a negative integer got x levels up
  • The slide parameter slides until there is a non-empty value found.

Example: Get the title of a page up in the root line

Get the title of the page on the first level of the root line:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = leveltitle : 1
Copied!

Get the title of the page on the level right below the current page AND if that is not present, walk to the bottom of the root line until there's a title:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = leveltitle : -2, slide
Copied!

leveluid

leveluid

leveluid
Syntax
leveluid : [pointer, integer]

Get the UID of a page in the root line.

  • Use an absolute level with 0 or a positive integer.
  • With a negative integer got x levels up

Example: Get the ID of the root page of the page tree

Get the ID of the root page of the website (level zero):

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = leveluid : 0
Copied!

LLL

LLL

LLL
Syntax
LLL: [fileref]:[labelkey]

Reference to a locallang label (XLIFF). Reference consists of [fileref]:[labelkey]

Example: Get a localized label

Get the localized label for the logout button:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = LLL : EXT:felogin/Resources/Private/Language/locallang.xlf:logout
Copied!

page

page

page
Syntax
page: [field in the current page record]

Get the specified field from the current page

Example: Get the current page title

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = page : title
Copied!

pagelayout

pagelayout

pagelayout

Get the current backend layout

Example: Get the current backend layout

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = pagelayout
Copied!

parameters

parameters

parameters
Syntax
parameters: [field name from the current $cObj->parameters array in the cObject.]

Get the content of a key in parameters array of the current cObject.

Example: Get the parameter color

Get content from $cObj->parameters['color']:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = parameters : color
Copied!

path

path

path

Path to a file, possibly placed in an extension, returns empty if the file does not exist.

Example: Resolve the path to a file

Get path to file rsaauth.js (inside extension rsaauth) relative to siteroot:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = path : EXT:rsaauth/resources/rsaauth.js
Copied!

It can also be helpful in combination with the stdWrap function insertData:

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.headerData.10 = TEXT
page.headerData.10 {
    data = path : EXT:site/Resources/Public/Images/logo.png
    wrap = <a href="|">
}
Copied!

register

register

register
Syntax
register: [field name from the $GLOBALS['TSFE']->register ]

Example: Get the content of a register

Get content from the register:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = register : color
Copied!

request

New in version 12.4

request

request
Syntax
request : [attribute] | [property] ( | [subproperty] | ... )

Retrieve the property of a PSR-7 request attribute.

Note that only scalar properties can be retrieved: int, float, string or bool as value. If the property is an object or an array, a subproperty can be given which then calls the getter method of the object or retrieves the key of the array.

Example: Get the page type

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = request : routing | pageType
Copied!

Example: Get a query argument

EXT:site_package/Configuration/TypoScript/setup.typoscript
# Retrieve the value of the query parameter ?myParam=<value>
lib.foo.data = request : routing | queryArguments | myParam

# Retrieve the value of the query parameter ?tx_myext[key]=<value>
lib.foo.data = request : routing | queryArguments | tx_myext | key
Copied!

Example: Get the nonce

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = request : nonce | value
Copied!

session

session

session
Syntax
session : [key]

The key refers to the session key used to store the value.

Example: Get a value stored in the current session

Get the number of items of a stored shopping cart array/object:

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = session : shop_cart | itemCount
Copied!

site

site

site
Syntax
site : [key]

Accessing the current site configuration.

Possible keys:
attributes
Additional parameters configured for this site.
base
The base URL for this site.
baseVariants
The base variants for this site.
rootPageId
The root page ID of this site.
identifier
The identifier (name) of this site configuration.
websiteTitle
The website title of this site.

Example: Get values from the current site

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10.data = site:base
page.10.wrap = This is your base URL: |
Copied!

Where site is the keyword for accessing an aspect, and the following parts are the configuration key(s) to access.

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10.data = site:customConfigKey.nested.value
Copied!

siteLanguage

siteLanguage

siteLanguage
Syntax
siteLanguage : [key]

Accessing the current site language configuration.

Possible keys:
attributes
Additional parameters configured for this site language.
base
The base URL for this language.
flagIdentifier

The flag key (like gb or fr) used in the TYPO3 backend.

New in version 12.4

You can also use flag to match the corresponding site configuration setting.

hreflang

The language tag for this language defined by RFC 1766 / 3066 for hreflang attributes.

This option is not relevant for regular websites without rendering hreflang tag.

languageId
The language mapped to the ID of the site language.
locale

Changed in version 12.3

The locale property in typoscript can be subdivided into more specific details using subkeys separated by a colon :. The subkeys languageCode, countryCode, and full allow access to the individual components of the locale value. For instance, a locale value of "en_US.UTF-8" can be broken down into "en", "US", and for the full subkey, "en-US".

  • languageCode: this contains the two-letter language code (previously siteLanguage:twoLetterIsoCode)
  • countryCode: contains the uppercase country code part of the locale
  • full: contains the entire locale (also the default if no subkey is specified)

The locale property represents the language, country, and character encoding settings for TYPO3. It is a composite value, such as "en_US.UTF-8", which can be dissected into different components via subkeys for more precise language and location specifications.

navigationTitle
The label to be used within language menus.
title
The label to be used within TYPO3 to identify the language.
typo3Language
The prefix for TYPO3's language files (default for English), otherwise one of TYPO3's internal language keys. Previously configured via TypoScript config.language = fr.
websiteTitle
The website title for this language. No automatic fallback to the site:websiteTitle!

Example: Get values from the current site language

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10.data = siteLanguage:navigationTitle
page.10.wrap = This is the title of the current site language: |

page.20 = TEXT
page.20.dataWrap = The current site language's locale is {siteLanguage:locale}

# Website title for the current language with fallback
# to the website title of the site configuration.
page.30 = TEXT
page.30.data = siteLanguage:websiteTitle // site:websiteTitle
Copied!

siteSettings

siteSettings

siteSettings

Access the site settings for the current site.

Example: Access the redirects HTTP status code

EXT:site_package/Configuration/TypoScript/setup.typoscript
page.10 = TEXT
page.10.data = siteSettings:redirects.httpStatusCode
Copied!

TSFE

TSFE

TSFE
Syntax
TSFE: [value from the $GLOBALS['TSFE'] array, multi-dimensional]

Changed in version 13.0

The following properties within TypoScriptFrontendController (TSFE) have been removed:

  • spamProtectEmailAddresses
  • intTarget
  • extTarget
  • fileTarget
  • baseUrl

Migrate these properties to use the config property. You can access the TypoScript properties directly, for example, via lib.something.data = TSFE : config | config | fileTarget

Example: Get the username field of the current frontend user

EXT:site_package/Configuration/TypoScript/setup.typoscript
lib.foo.data = TSFE : fe_user | user | username
Copied!