BeforeFinalSearchQueryIsExecutedEvent

New in version 13.4.2 / 14.0

This event was added as a replacement for the removed hook $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['indexed_search']['pi1_hooks'].

The PSR-14 \TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent has been introduced which allows developers to manipulate the (internal) \TYPO3\CMS\Core\Database\Query\QueryBuilder instance, just before the query gets executed.

Example

Changing the host of the current request and setting it as canonical:

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

declare(strict_types=1);

namespace MyVendor\MyExtension\IndexedSearch\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent;

final readonly class EventListener
{
    #[AsEventListener(identifier: 'manipulate-search-query')]
    public function beforeFinalSearchQueryIsExecuted(BeforeFinalSearchQueryIsExecutedEvent $event): void
    {
        $event->queryBuilder->andWhere(
            $event->queryBuilder->expr()->eq('some_column', 'some_value'),
        );
    }
}
Copied!

API

class BeforeFinalSearchQueryIsExecutedEvent
Fully qualified name
\TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent

Listeners are able to manipulate the QueryBuilder before the search query gets executed

public queryBuilder
public readonly searchWords
public readonly freeIndexUid