[BUGFIX] Fix PageTS config example of CKEditor RTE
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / 8.6 / Feature-79140-AddHookToAddCustomTypoScriptTemplates.rst
1 .. include:: ../../Includes.txt
2
3 =============================================================
4 Feature: #79140 - Add hook to add custom TypoScript templates
5 =============================================================
6
7 See :issue:`79140`
8
9 Description
10 ===========
11
12 A new hook in TemplateService allows to add or modify existing TypoScript templates.
13
14 Register the hook via :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Core/TypoScript/TemplateService']['runThroughTemplatesPostProcessing']`
15 in the extensions' ext_localconf.php file.
16
17 Example
18 =======
19
20 An example implementation could look like this:
21
22 EXT:my_site/ext_localconf.php
23
24 .. code-block:: php
25
26    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Core/TypoScript/TemplateService']['runThroughTemplatesPostProcessing'][1313131313] =
27       \MyVendor\MySite\Hooks\TypoScriptHook::class . '->addCustomTypoScriptTemplate';
28
29
30 EXT:my_site/Classes/Hooks/TypoScriptHook.php
31
32 .. code-block:: php
33
34    namespace MyVendor\MySite\Hooks;
35
36    class TypoScriptHook
37    {
38
39       /**
40        * Hooks into TemplateService after
41        * @param array $parameters
42        * @param \TYPO3\CMS\Core\TypoScript\TemplateService $parentObject
43        * @return void
44        */
45       public function addCustomTypoScriptTemplate($parameters, $parentObject)
46       {
47          // Disable the inclusion of default TypoScript set via TYPO3_CONF_VARS
48          $parameters['isDefaultTypoScriptAdded'] = true;
49          // Disable the inclusion of ext_typoscript_setup.txt of all extensions
50          $parameters['processExtensionStatics'] = false;
51
52          // No template was found in rootline so far, so a custom "fake" sys_template record is added
53          if ($parentObject->outermostRootlineIndexWithTemplate === 0) {
54             $row = [
55                'uid' => 'my_site_template',
56                'config' => '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_site/Configuration/TypoScript/site_setup.t3s">',
57                'root' => 1,
58                'pid' => 0
59             ];
60             $parentObject->processTemplate($row, 'sys_' . $row['uid'], 0, 'sys_' . $row['uid']);
61          }
62       }
63    }
64
65 .. index:: PHP-API, TypoScript