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,83 @@
.. include:: /Includes.rst.txt
.. _feature-109018-1769714898:
====================================================================
Feature: #109018 - PSR-14 event to modify indexed_search result sets
====================================================================
See :issue:`109018`
Description
===========
A new PSR-14 event
:php:`\TYPO3\CMS\IndexedSearch\Event\AfterSearchResultSetsAreGeneratedEvent`
has been introduced to modify search result sets in
:php-short:`\TYPO3\CMS\IndexedSearch\Controller\SearchController`.
The event is dispatched in :php:`searchAction()` after all the result sets have
been built. Event listeners can manipulate complete result sets, including
pagination, rows, section data, and category metadata.
The event has the following methods:
* :php:`getResultSets()`: Returns all the result sets from the current search.
* :php:`setResultSets(array $resultSets)`: Replaces the result sets.
* :php:`getSearchData()`: Returns the search configuration array.
* :php:`getSearchWords()`: Returns an array of search words.
* :php:`getView()`: Returns the view instance.
* :php:`getRequest()`: Returns the current server request.
Example
=======
The following example replaces every result set pagination with
:php-short:`\TYPO3\CMS\Core\Pagination\SlidingWindowPagination`:
.. code-block:: php
:caption: EXT:my_extension/Classes/EventListener/ModifySearchPaginationListener.php
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\EventListener;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Pagination\SimplePagination;
use TYPO3\CMS\Core\Pagination\SlidingWindowPagination;
use TYPO3\CMS\IndexedSearch\Event\AfterSearchResultSetsAreGeneratedEvent;
#[AsEventListener(identifier: 'my-extension/modify-search-result-sets')]
final readonly class ModifySearchPaginationListener
{
public function __invoke(
AfterSearchResultSetsAreGeneratedEvent $event
): void {
$resultSets = $event->getResultSets();
foreach ($resultSets as $key => $resultSet) {
if (($resultSet['pagination'] ?? null)
instanceof SimplePagination
) {
$resultSets[$key]['pagination']
= new SlidingWindowPagination(
$resultSet['pagination']->getPaginator(),
5
);
}
}
$event->setResultSets($resultSets);
}
}
Impact
======
This event allows search result sets to be modified in a single listener
call. It enables custom pagination strategies, as well as advanced search
result transformations.
.. index:: Frontend, PHP-API, ext:indexed_search