Attention

TYPO3 v9 has reached its end-of-life September 30th, 2021 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.

You can order Extended Long Term Support (ELTS) here: TYPO3 ELTS.

Base Variants

In Site Handling base variants represent different bases for a web site depending on a specified condition. For example a "live" base URL might be https://example.org but on local machine it's https://example.localhost as a domain - that's when variants are used.

Base variants exist for languages, too. Currently these can only be defined through the respective *.yml file, there is no UI available yet.

Variants consist of two parts:

  • a base to use for this variant

  • a condition that decides when this variant shall be active

Conditions are based on Symfony Expression Language and allow flexible conditions. For example:

applicationContext == "Development"

would define a base variant to use in Development context.

Add a base variant

A configured base variant for development context.

Hint

For those coming from earlier TYPO3 versions: With site handling, there is no need for sys_domain records anymore! :)

The following variables and functions are available in addition to the default Symfony functionality:

Example

rootPageId: 1
base: 'https://example.org/'
baseVariants:
  -
    base: 'https://example.localhost/'
    condition: 'applicationContext == "Development"'
  -
    base: 'https://staging.example.org/'
    condition: 'applicationContext == "Production/Sydney"'
  -
    base: 'https://testing.example.org/'
    condition: 'applicationContext == "Testing/Paris"'
languages:
  -
    title: 'Global'
    enabled: true
    languageId: '0'
    base: /
    typo3Language: default
    locale: en_UK.UTF-8
    iso-639-1: en
    navigationTitle: English
    hreflang: gb-en
    direction: ''
    flag: gb
  -
    title: 'DE'
    enabled: true
    languageId: '1'
    base: https://example.de/'
    baseVariants:
      -
        base: 'https://de.example.localhost/'
        condition: 'applicationContext == "Development"'
      -
        base: 'https://staging.example.de/'
        condition: 'applicationContext == "Production/Sydney"'
      -
        base: 'https://testing.example.de/'
        condition: 'applicationContext == "Testing/Paris"'
    typo3Language: de
    locale: de_DE.UTF-8
    iso-639-1: de
    navigationTitle: Deutsch
    hreflang: de-de
    direction: ''
    fallbackType: strict
    flag: de

Properties

typo3.version

Datatype

string

Description

The current TYPO3 version

Example

9.5.0

typo3.branch

Datatype

string

Description

The current TYPO3 branch

Example

9.5

typo3.devIpMask

Datatype

string

Description

The configured devIpMask taken from $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']

Example

77.176.160.*

applicationContext

Datatype

string

Description

The current application context

Example

Development

Functions

All functions from TYPO3s DefaultFunctionsProvider are available:

ip

Datatype

string

Description

Match an IP address, value or regex, wildcards possible. Special value: devIp for matching devIpMask.

Example

ip("77.176.160.*")

compatVersion

Datatype

string

Description

Match a TYPO3 version

Example

compatVersion("9.5.0"), compatVersion("9.4")

like

Datatype

string

Description

Comparison function to compare two strings. The first parameter is the "haystack", the second the "needle". Wildcards are allowed.

Example

like("foobarbaz", "*bar*")

getenv

Datatype

string

Description

Wrapper for PHPs getenv() function. Allows accessing environment variables.

Example

getenv("TYPO3_BASE_URL")

date

Datatype

string

Description

Get the current date in given format.

Example for checking the current month

date("j") == 7

feature

Datatype

string

Description

Check whether a feature ("feature toggle") is enabled in TYPO3.

Example

feature("TypoScript.strictSyntax")

traverse

Datatype

array and string

Description

This function has two parameters: - first parameter is the array to traverse - second parameter is the path to traverse Syntax.

Example

traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0