Batman Posted April 17, 2019 Posted April 17, 2019 Hallo, alle meine Artikel haben einzigartige Artikelnummern. Diese setzten sich auch Buchstaben, Zahlen und Bindestrichen zusammen (z.B. ARES-SIGEDHLM-0001). Wenn ich aber eine dieser einzigartigen Artikelnummern in der Suche meines Shops eingebe, dann bekomme ich 2/3 aller meiner Artikel als Ergebnis angezeigt. Das sind mehrere Hundert Ergebnisse. Ich habe versucht die Sucheinstellungen anzupassen. Wenn ich die Exakte Suche aktiviere ändert sich nichts. Ich habe Artikelnummern in den Sucheinstellungen die höchste Gewichtung gegeben. Auch das ohne Erfolg. Wenn ich die Artikelnummer bei der Suche in Anführungszeichen setzte bekomme ich auch kein anderes Ergebnis. Da die Artikelnummern jedoch einzigartig sind, sollte ich auch nur ein einziges Ergebnis bekommen. Hat jemand eine Idee wie man dieses Problem beheben könnte? Meine Shop-Version: 1.0.8
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Ich denke die Bindestriche sind das Problem... Wenn man nur nach "SIGEDHLM" sucht, funktioniert es... Ich bin persönlich gar kein Fan von Sonderzeichen in Artikelnummern. Das macht immer Probleme... Wir verzichten auch auf Buchstaben...
Batman Posted April 17, 2019 Author Posted April 17, 2019 Hallo Emanuel, danke für die schnelle Rückmeldung. Leider sind meine Artikelnummern schon seit langem so und das auch über mehrere Plattformen hinweg. Unter Prestashop war das auch kein Problem, kann ich mich gut erinnern. Hast Du eine Idee wie ich das Problem lösen könnte ohne meine Artikelnummern zu ändern?
Batman Posted April 17, 2019 Author Posted April 17, 2019 Vor allem müsste es doch wenigsten funktionieren wenn man den Suchbegriff in Anführungszeichen setzt. Dann sollten die Bindestriche doch keine Rolle mehr spielen.
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Das es unter Prestashop funktionierte, überrascht mich. Ich denke man müsste in der Search.php Class die funktion find() unter die Luppe nehmen.
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Du könntest folgendes versuchen $words = explode(' ', Search::sanitize($expr, $idLang, false, $context->language->iso_code)); mit $words = explode(' ', pSQL($expr)); ersetzen.
Batman Posted April 17, 2019 Author Posted April 17, 2019 Das mit der Search.php war eine gute Idee. Ich habe einfach die Search.php von Thirty Bees durch die Search.php aus meiner alten Prestashop-Version ersetzt und jetzt funktioniert es wieder 🙂 Ich werde jetzt noch paar Tests machen um zu sehen ob nichts anderes dabei kaputt gegangen ist.
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Habs mir jetzt genauer angesehen. Der Grund liegt wohl darin: https://github.com/thirtybees/thirtybees/commit/2fee5fe47a63901c7103c92d22abdbce6ee8034a#diff-4d2b8c521b121179fd17f512b9ffaebc Wenn du das file einfach ganz überschreibst, wird das bei jedem Update verloren gehen...
Batman Posted April 17, 2019 Author Posted April 17, 2019 Also entferne ich den Bindestrich, damit er ihn nicht durch ein Leerzeichen ersetzt? Etwa so: $string = preg_replace('/[._]+/', ' ', $string);
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Ich bin selber nicht ganz sicher, da ich mich mit regulären Ausdrücken nicht auskenne :D. Ich würde einfach die ganze Zeile entfernen. Schliesslich wurde einfach diese Zeile hinzugefügt... Am sinnvollsten mittels Override, damit du bei einem Update nicht wieder das gleiche Problem bekommst.
Batman Posted April 17, 2019 Author Posted April 17, 2019 Ich habe die Zeile mal testweise auskommentiert. Das scheint nicht der Übeltäter gewesen zu sein. Reagiert noch immer wie zuvor.
wakabayashi Posted April 17, 2019 Posted April 17, 2019 Ok dann musst du genau vergleichen mit der ps sanitize Funktion. Es passiert zu 99% in dieser Funktion...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now