TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:09 +02:00
commit af8cc155b5
6818 changed files with 642608 additions and 0 deletions
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _feature-97945:
========================================================
Feature: #97945 - PSR-14 AfterPageTreeItemsPreparedEvent
========================================================
See :issue:`97945`
Description
===========
A new PSR-14 event :php:`\TYPO3\CMS\Backend\Controller\Event\AfterPageTreeItemsPreparedEvent`
has been introduced which allows to modify prepared page tree items. It can also
be used as a replacement for the now removed
:php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Workspaces\Service\WorkspaceService']['hasPageRecordVersions']`
and :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Workspaces\Service\WorkspaceService']['fetchPagesWithVersionsInTable']`
:doc:`hooks <../12.0/Breaking-97945-RemovedWorkspaceServiceHooks>`.
The event is dispatched in the :php:`TreeController` after the page tree items
have been resolved and prepared. The event provides the current PSR-7 Request
as well as the page tree items. All items contain the corresponding page
record in the special :php:`_page` key.
Example
=======
Registration of the event in your extension's :file:`Services.yaml` file:
.. code-block:: yaml
MyVendor\MyPackage\Workspaces\MyEventListener:
tags:
- name: event.listener
identifier: 'my-package/workspaces/modify-page-tree-items'
The corresponding event listener class:
.. code-block:: php
use TYPO3\CMS\Backend\Controller\Event\AfterPageTreeItemsPreparedEvent;
final class MyEventListener
{
public function __invoke(AfterPageTreeItemsPreparedEvent $event): void
{
$items = $event->getItems();
foreach ($items as &$item) {
// Setting special item for page with id 123
if ($item['_page']['uid'] === 123) {
$item['icon'] = 'my-special-icon';
}
}
$event->setItems($items);
}
}
Impact
======
It is now possible to modify the prepared page tree items before they are
returned by the :php:`TreeController`, using the new PSR-14 event
:php:`AfterPageTreeItemsPreparedEvent`.
.. index:: Backend, PHP-API, ext:backend