Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Important: #105007 - Manipulation of final search query in EXT:indexed_search #4480

Open
simonschaufi opened this issue Feb 16, 2025 · 0 comments

Comments

@simonschaufi
Copy link
Collaborator

Important: #105007 - Manipulation of final search query in EXT:indexed_search

https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/13.4.x/Important-105007-ManipulationOfFinalSearchQueryInEXTindexed_search.html

Important: #105007 - Manipulation of final search query in EXT:indexed_search

See 105007

Description

By removing the searchSkipExtendToSubpagesChecking option in 97530,
there might have been performance implications for installations with a
lot of sites. This could be circumvented by adjusting the search query
manually, using available hooks. Since those hooks have also been
removed with 102937, developers were no longer be able to handle the
query behaviour.

Therefore, the PSR-14 BeforeFinalSearchQueryIsExecutedEvent has been
introduced which allows developers to manipulate the QueryBuilder
instance again, just before the query gets executed.

Additional context information, provided by the new event:

  • searchWords - The corresponding search words list
  • freeIndexUid - Pointer to which indexing configuration should be
    searched in. -1 means no filtering. 0 means only regular indexed
    content.

Important

The provided query (the QueryBuilder instance) is controlled by
TYPO3 and is not considered public API. Therefore, developers using
this event need to keep track of underlying changes by TYPO3. Such
changes might be further performance improvements to the query or
changes to the database schema in general.

Example

<?php
declare(strict_types=1);

namespace MyVendor\MyExtension\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')
        );
    }
}

PHP-API, ext:indexed_search

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant