Funktion einer Klasse mit einem Plugin überschreiben (SearchTermPreProcessor)

in der Klasse SearchTermPreProcessor
/engine/Shopware/Bundle/SearchBundle/SearchTermPreProcessor.php

ersetzt die Funktion process() leider die / aus den Suchbegriffen, nun hat unser Kunde aber Originalteilenummern in denen / enthalten sind und die suche ohne diese erzeugt nur unsinnige Ergebnisse.

Diese nicht zu ersetzen führt im Shopfrontend auch nur dazu das der Textlink „alle Ergebnisse Anzeigen“ eine Fehlerhafte url aufbaut, die suche per klick auf die Lupe oder aber das Absenden per Enter funktioniert weiterhin.

Daher würden wir gerne diese Funktion mit einem Plugin überschreiben um dieses Verhalten zu unterbinden. Und dannach den Link „alle Ergebnisse Anzeigen“ fixen. Allerdings finde ich in der Dokumentation keinen Hinweis darauf wie eine solche Klasse überschrieben werden kann 

 $this-\>subscribeEvent( 'SearchTermPreProcessor::process::replace', 'TEST' );

führte leider auch zu keinem Ergebniss.
 

Das Zauberwort das du suchst ist in diesem Fall „Services dekorieren“.

Eine Anleitung dazu: Service extensions

Oder hier für das 5.2er Pluginsystem: https://developers.shopware.com/developers-guide/plugin-system/#decorate-a-service

Die Service ID für den SearchTermPreProcessor ist shopware_search.search_term_pre_processor

1 „Gefällt mir“