Hallo Zusammen,
ich möchte gerne bei einer Suche über das Search Bundle andere Parameter verwenden, als im Shop eingestellt sind. Als Beipspiel verwenden wir im Shop die “UND”-basierte Suche. Ich habe hierzu bereits testweise …
Shopware()->Config()->offsetSet(‘search::enableandsearchlogic’, false);
… gesetzt, dies hat aber am Ergebnis nichts geändert. An welcher Stelle muss ich ansetzen, damit ich die Suchparameter beeinflussen kann?
Ich habe nun den Service SearchTermQueryBuilder dekoriert und und Core-Service an die neue Klasse übergeben. Damit habe ich Zugriff auf die einzige öffentliche Methode buildQuery(). Kopiere ich den Originalinhalt des Core-Service in die neue Methode, so erhalte ich die Fehlermeldung " Call to a member function getKeywordsOfTerm() on null". Das ist soweit klar, da der Methodenaufruf $this->keywordFinder->getKeywordsOfTerm($term); nicht im Kontext des Core-Service erfolgt. Aus dem gleichen Grund kann ich an dieser Stelle auch die config-Einstellungen nicht bearbeiten, da der Zugriff auf die private Variable nicht möglich ist.
Ich kann mir alternativ in der Methode mit $query = $this->coreservice->buildQuery($term); zwar den Query-String holen und dann weiter bearbeiten, weiss aber nicht genau wie ich das db-query dann so ändern kann, damit wieder eine ODER Suche durchgeführt wird.
Momentan habe ich es so gelöst, dass ich den Service SearchTermQueryBuilder komplett überschrieben habe , aber das ist ja auch keine dauerhafte Lösung.