[TASK] change TYPO3 version in INSTALL.md
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / 8.7 / Important-82763-GlobalFluidExpressionNodeTypeAndTemplatePreProcessorConfiguration.rst
1 .. include:: ../../Includes.txt
2
3 ============================================================================================
4 Important: #82763 - Fluid config for ExpressionNodeType and TemplatePreProcessor made global
5 ============================================================================================
6
7 See :issue:`82763`
8
9 Description
10 ===========
11
12 Before, Fluid's arrays of class names for ``ExpressionNodeType`` and ``TemplatePreProcessor`` were hardcoded into the
13 ``RenderingContext`` constructor and were not possible to modify except when having access to the ``RenderingContext``.
14
15 Now, these two arrays of class names are possible to configure in ``TYPO3_CONF_VARS`` which allows extensions or site
16 administrators to add and remove such Fluid components on a global level.
17
18 Example:
19
20 .. code-block:: php
21
22     // Add one new ExpressionNodeType and one new TemplatePreProcessor to be used in every RenderingContext
23     // For example from an ext_localconf.php file in an extension.
24     $GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['expressionNodeTypes'][] = \MyVendor\MyExtension\MyFluidExpressionNodeType::class;
25     $GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['preProcessors'][] = \MyVendor\MyExtension\MyFluidTemplatePreProcessor::class;
26
27 These classes will then be *added to the list of existing implementations* and will be automatically used as defaults
28 when new ``RenderingContext`` instances are created.
29
30 See for reference how to create such implementations:
31
32 * ``\TYPO3Fluid\Fluid\Core\Parser\TemplateProcessorInterface``
33 * ``\TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\ExpressionNodeInterface``
34
35 Both interfaces contain the documentation for how they must be implemented, when/why functions get called and what the
36 expected return types are. The interfaces must of course be implemented by classes you add to ``TYPO3_CONF_VARS`` in
37 these configuration sections. Due to their global nature you should be very careful to implement the classes and in
38 particular observe the return types.
39
40 .. index:: Fluid