Slash im Suchbegriff wird entfernt - SearchTermPreProcessor überschreiben?

Hallo,

wir haben in Artikelnamen öfters auch Slashes drin. Diese werden aktuell innerhalb der Suche entfernt und durch Leer ersetzt.

namespace Shopware\Bundle\SearchBundle;

class SearchTermPreProcessor implements SearchTermPreProcessorInterface
{
    /**
     * @param string $term
     *
     * @return string
     */
    public function process($term)
    {
        //we have to strip the / otherwise broken urls would be created e.g. wrong pager urls
        $term = trim(strip_tags(htmlspecialchars_decode(stripslashes($term))));

        return str_replace('/', ' ', $term);
    }
}

wir brauchen aber den Slash definitiv im Suchbegriff… 

leider hab ich an der Möglichkeit keine Chance einzugreifen, weil es keinen Hook gibt…

außerdem macht mich der Kommentar von Shopware etwas nachdenklich… es darf doch ein Slash kein Problem darstellen, von wegen „broken URLs“

 

weiß jemand Rat?

Mir fällt auf, dass ihr ganz schön im Shop herum bastelt. Nicht das dies irgendwann zu größeren Problemen führt. Slash im Artikelnamen sind schon, auf Deutsch gesagt, etwas Kacke. Auch im Bezug auf SEO. Und dort irgendwo im System rumfummeln halte ich auch für keine gute Idee. Vielleicht die Sache noch mal überdenken?

Ansonsten fällt mir dazu auch nichts ein, es sein denn ihr baut euch einen eigenen Such-Controller - sprich also Plugin. Dann kannst du dein Suchbegriff nach euren Wünschen zurecht biegen.

naja es gibt Artikel mit Zollangaben im Namen, zB 3/4" oder 1/2" … das ist leider so … und wir möchten auch nicht 0,75" oder 0,5" schreiben weil die Slash-Schreibweise nunmal gängig ist in der Branche.

Über die Artikelnamen könnte man aber vermutlich nochmal reden es wegzulassen… es gibt jedoch auch Slashes in Artikelnummern. Wir haben eine eigenes Plugin geschrieben welches mit diesem Hook

Shopware_Controllers_Frontend_Search::defaultSearchAction::after

ein best. Freitextfeld für die Artikelnummer durchsucht. Die Standardsuche in Shopware nach Freitextfeldern hat nicht so funktioniert wie wir wollen.

doch leider können wir das Feld auch nicht mit Slash durchsuchen, weil der Suchbegriff hier schon ohne Slash landet (eben durch oben gezeigte Methode)

Hm ok, das mit dem Hook bei der Suche habe ich so noch gar nicht ausprobiert. Wenn man defaultSearchAction umschreiben könnte, dann wäre das schon mal etwas. Aber das habe ich mir bisher noch nie genau angesehen.

Nachtrag: Oder du findest einen Weg die Funktion getSearchTerm() zu überschreiben. Offensichtlich löscht diese den Slash raus.

 

Das mit dem Hook funktioniert einwandfrei. So erweitern oder verändern wir die Suchergebnisse so, dass sie für uns passen. Haben auch ein Splitting nach Varianten drin, was die Standardsuche ja auch nicht kann. Soweit kein Stress.

Nur die blöden Sonderzeichen aka Slashes … die getSearchTerm() ist leider private …

 

EDIT:

hab gerade rausgefunden, dass ich in meiner Hook-Methode so an den originalen Suchbegriff kommen kann:

_trim(strip\_tags(htmlspecialchars\_decode(**Shopware()-\>Front()-\>Request()-\>getQuery()["sSearch"]**)))_

die getSearchTerm() ist leider private

Ach Mist, das habe ich übersehen.