TYPO3 provides an API class for creating so-called "feature toggles". Feature toggles provide an easy way to add new implementations of features next to their legacy version. By using a feature toggle, the integrator or site administrator can decide when to switch to the new feature.
The API checks against a system-wide option array within
$GLOBALS['TYPO3_CONF_VARS']['SYS']['features'] which an integrator or
admininistrator can set in the
config/system/settings.php file. Both
TYPO3 Core and extensions can provide alternative functionality for a certain
Examples for features are:
Throw exceptions in new code instead of just returning a string message as error message.
Disable obsolete functionality which might still be used, but slows down the system.
Enable alternative "page not found" handling for an installation.
Table of Contents
Naming of feature toggles¶
Feature names should NEVER be named "enable" or have a negation, or contain versions or years. It is recommended to use "lowerCamelCase" notation for the feature names.
Core feature toggles¶
Some examples for feature toggles in the TYPO3 Core:
redirects.hitCount: Enables hit statistics in the redirects backend module
security.backend.enforceReferrer: If on, HTTP referrer headers are enforced for backend and install tool requests to mitigate potential same-site request forgery attacks.
Enable / disable feature toggle¶
Features can be toggled in the Admin Tools > Settings module via Feature Toggles:
Internally, the changes are written to
'SYS' => [ 'features' => [ 'redirects.hitCount' => true, ], ]
New in version 12.1.
config/system/settings.php file is write-protected an info
box is rendered. In that case, all input fields are disabled and the save
button is not available.
Feature toggles in TypoScript¶
One can check whether a feature is enabled in TypoScript with the function
[feature("unifiedPageTranslationHandling")] # This condition matches if the feature toggle "unifiedPageTranslationHandling" is true [END] [feature("unifiedPageTranslationHandling") === false] # This condition matches if the feature toggle "unifiedPageTranslationHandling" is false [END]