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 admin 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 admin can set in the
Both TYPO3 Core and Extensions can provide alternative functionality for a certain feature.
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 PageNotFound handling for an installation.
Naming of Feature Toggles¶
Feature names should NEVER be named "enable" or have a negation, or contain versions or years.
Core Feature Toggles¶
Some examples for feature toggles in the TYPO3 Core:
redirects.hitCount: Enables hit statistics in the redirects backend module
TypoScript.strictSyntax: If on, TypoScript is parsed in strict syntax modes. Enabling this feature means old condition syntax (which is deprecated) will trigger deprecation messages.
Enable / Disable Feature Toggle¶
Features can be toggled in the Settings module via Feature Toggles:
Internally, the changes are written to
'SYS' => [ 'features' => [ 'redirects.hitCount' => true, ], ]
Feature Toggles in TypoScript¶
To check wether a feature is enabled in TypoScript was introduced in v9.5 in :issue:`86881`
Support for feature toggle check in the symfony expression language DefaultFunctionProvider is provided.
With the new function
feature() the feature toggle can be checked.
[feature("TypoScript.strictSyntax")] # This condition matches if the feature toggle "TypoScript.strictSyntax" is true [END] [feature("TypoScript.strictSyntax") === false] # This condition matches if the feature toggle "TypoScript.strictSyntax" is false [END]