Kategorien
Technik

GET-Parameter bei der Suche mit Preisspannen in Magento

Wie setzt sich bei Magento die Suche nach einer Preisspanne zusammen?

Diese Frage musste ich mir heute für eine Erweiterung beantworten, bei der ich per Ajax einen GET-String zusammensetzen und an den Server schicken musste, der als Parameter eine vom Kunden gewählte Preisspanne enthält. Sprich “Gib mir alle Produkte die zwischen 20 und 30 € kosten”.

Es gibt für Besucher eines Magento-Shops zwei Möglichkeiten, um die Produkte über den Preis einzuschränken. Entweder bequem über die Filternavi, oder über die erweiterte Suche.

Letzteres ist einfach zu verstehen, die Parameter sehen so aus:

…&price[from]=20&price[to]=30

Diese Konstellation tritt dann auf, wenn man die Preisfelder in der erweiterten Suche ausfüllt. Diese wird beim Abschicken vom Core-Modul CatalogSearch verarbeitet. Das Ergebnis einer solchen Anfrage kann nebenbei gesagt nicht noch einmal per Filternavi eingeschränkt werden.

Bei der Filter-Navi auf einer Kategorie-Seite sieht der Parameter dagegen auf den ersten Blick etwas konfus aus, nämlich so:

…?price=3,10

Der Algorithmus ist aber schnell entschlüsselt:

=> von (3 * 10 – 10) bis (3 * 10)

=> von 20 – 30

Anderes Beispiel:

…?price=5,100

=> von (5 * 100 – 100) bis (5 * 100)

=> von 400 – 500

Der Grund für diese Schreibweise wird wohl daran liegen, dass der Admin im Backend die Abstufung für die Preisanzeige angeben kann. D. h. er kann einstellen, ob die Preise in 10er oder 100er-Schritten angezeigt werden sollen.