Leerzeichen in Such-String wird zu Plus-Zeichen

Hallo zusammen,

der Shop unseres Kunden zeigt ein merkwürdiges Verhalten. Wenn in einem Such-String ein Leerzeichen enthalten ist, funktioniert die initiale Suche ganz normal. In der Url wird das Leerzeichen im Such-String mit einem ±Zeichen dekodiert (sucht man z.B. nach “test string”, steht in der Such-Url entsprechen “test+string”. Soweit sogut.

Wenn man jetzt eine Action ausführt, z.B. die Artikel-pro-Seite ändert, wird dieser Suchstring “wörtlich” genommen und es wird jetzt nach “test+string” gesucht. Entsprechend wird der Such-String in der Url nun als “test%2Bstring” kodiert. Das ist insofern merkwürdig, weil im Demo-Shop ein entsprechend aufgebauter Suchstring bei Ausführung einer Action wieder richtig erkannt wird. Da erkennt das Skript also, dass das + nicht wörtlich zu nehmen ist.

Ich konnte das Auftreten des Problems zurückverfolgen bis zur Methode setCategoryParamsFromUrlParams in der jquery.listing-actions.js Datei. Hier wird der Suchstring direkt aus der Url ausgelesen, natürlich wird auch das + mit ausgelesen. Anschließend wird es weiterverarbeitet, das ±Zeichen wird aber nie “zurückverwandelt”, es wird eben mit decodeURIComponent dekodiert und zu %2B.

So wie ich den Code verstehe muss es also passieren, dass + zu %2B wird (auch wenn das natürlich eigentlich nicht gewollt ist, sondern eigentlich das Verhalten aus dem Demo-Shop). Was ich aber nicht verstehe, wieso es im Demo-Shop dann z.B. funktioniert. Also wo ist die Stelle, wo aus dem + wieder ein Leerzeichen wird?

Die eingesetzte Shopware-Version ist 5.1.3.

Viele Grüße
Malte

Hallo Malte,

das genannte Verhalten wurde in der Shopware Version 5.2.10 gefixt. Den entsprechenden Fix findest du hier: [Papercut][SW-12795] fix searches with uri related chars · shopware/shopware@3fe2f20 · GitHub

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Super, vielen Dank für die schnelle Hilfe!