AfterTemplatesHaveBeenDeterminedEvent

The PSR-14 event \TYPO3\CMS\Core\TypoScript\IncludeTree\Event\AfterTemplatesHaveBeenDeterminedEvent can be used to manipulate sys_template rows. The event receives the list of resolved sys_template rows and the \Psr\Http\Message\ServerRequestInterface and allows manipulating the sys_template rows array.

The event is called in the code of the Site Management > TypoScript backend module, for example in the submodule Included TypoScript, and in the frontend.

Extensions using the old hook that want to stay compatible with TYPO3 v11 and v12 can implement both the hook and the event.

Example

EXT:my_extension/Configuration/Services.yaml
services:
  # Place here the default dependency injection configuration

  MyVendor\MyExtension\TypoScript\EventListener\MyEventListener:
    tags:
      - name: event.listener
        identifier: 'my-extension/post-process-sys-templates'
Copied!

Read how to configure dependency injection in extensions.

The corresponding event listener class could look like this:

EXT:my_extension/Classes/TypoScript/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\TypoScript\EventListener;

use TYPO3\CMS\Core\TypoScript\IncludeTree\Event\AfterTemplatesHaveBeenDeterminedEvent;

final class MyEventListener
{
    public function __invoke(AfterTemplatesHaveBeenDeterminedEvent $event): void
    {
        $rows = $event->getTemplateRows();

        // ... do something ...

        $event->setTemplateRows($rows);
    }
}
Copied!

API

class AfterTemplatesHaveBeenDeterminedEvent
Fully qualified name
\TYPO3\CMS\Core\TypoScript\IncludeTree\Event\AfterTemplatesHaveBeenDeterminedEvent

A PSR-14 event fired when sys_template rows have been fetched.

This event is intended to add own rows based on given rows or site resolution.

getRootline ( )
Returns
array
getRequest ( )
Returns
?\Psr\Http\Message\ServerRequestInterface
getSite ( )

Convenience method to directly retrieve the Site. May be null though!

Returns
?\TYPO3\CMS\Core\Site\Entity\SiteInterface
getTemplateRows ( )
Returns
array
setTemplateRows ( array $templateRows)
param $templateRows

the templateRows