.. 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 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