TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user