W sklepie internetowym kluczowe jest odpowiednie prezentowanie produktów – szczególnie istotne jest, aby produkty dostępne były widoczne przed tymi, których obecnie nie ma w magazynie. Ułatwia to klientom zakupy i zwiększa konwersję. Jeśli korzystasz z PrestaShop i chcesz uporządkować produkty w taki sposób, aby dostępne były wyświetlane przed niedostępnymi, można to łatwo osiągnąć, modyfikując odpowiednie zapytanie SQL.
W PrestaShop, w module Filtrów Nawigacyjnych (ps_facetedsearch), można tego dokonać modyfikując plik MYSQL.php
znajdujący się w:
\modules\ps_facetedsearch\src\Adapter\MYSQL.php
Domyślne sortowanie produktów w PrestaShop odbywa się na podstawie wartości pola, które jest przekazywane do zapytania SQL. Może to być cena, nazwa produktu, data dodania, itd. Wygląda to mniej więcej tak:
$query .= ' ORDER BY ' . $orderField . ' ' . strtoupper($this->getOrderDirection());
Ten fragment kodu tworzy zapytanie SQL, które sortuje produkty według pola zdefiniowanego w zmiennej $orderField
oraz kierunku sortowania określanego przez funkcję getOrderDirection()
.
Jeśli chcesz zmodyfikować sortowanie, aby produkty niedostępne (czyli takie, których ilość w magazynie wynosi 0) były wyświetlane na końcu listy, możesz dodać do zapytania SQL dodatkowe warunki, które sprawią, że produkty z ilością większą niż 0 pojawią się wcześniej.
Zamiast domyślnego sortowania, modyfikujemy kod na:
$query .= ' ORDER BY (CASE WHEN p.quantity > 0 THEN 1 ELSE 0 END) DESC, ' . $orderField . ' ' . strtoupper($this->getOrderDirection());
p.quantity
). Jeśli ilość jest większa niż 0, zwraca wartość 1
(produkt jest dostępny). Jeśli ilość wynosi 0, zwraca wartość 0
(produkt jest niedostępny).1
(czyli dostępne) będą wyświetlane na początku listy, a produkty z wartością 0
(niedostępne) będą wyświetlane na końcu.Wprowadzenie tego typu sortowania jest szczególnie korzystne w dużych sklepach, gdzie produkty często się wyprzedają. Klienci mogą wówczas przeglądać ofertę bez konieczności natrafiania na niedostępne produkty, co minimalizuje ich frustrację i poprawia wrażenia z zakupów. Produkty niedostępne, choć nadal widoczne (jeśli nie zostały ukryte), będą widniały na końcu listy, nie przeszkadzając w przeglądaniu aktualnej oferty.
Aby wprowadzić tę zmianę w swoim sklepie PrestaShop, wykonaj poniższe kroki:
1 Otwórz plik MYSQL.php
w lokalizacji:
\modules\ps_facetedsearch\src\Adapter\MYSQL.php
2 Znajdź fragment kodu odpowiedzialny za sortowanie (zapytanie SQL, które zawiera ORDER BY
).
Dla PrestaShop 8.1 w linii 131 instrukcja warunkowa
if ($orderField) { ...
3 Zmień kod sortowania z:
$query .= ' ORDER BY ' . $orderField . ' ' . strtoupper($this->getOrderDirection());
na
$query .= ' ORDER BY (CASE WHEN p.quantity > 0 THEN 1 ELSE 0 END) DESC, ' . $orderField . ' ' . strtoupper($this->getOrderDirection());
Zapisz plik i przetestuj działanie sortowania w sklepie.
Dzięki prostej modyfikacji zapytania SQL w module ps_facetedsearch możesz w swoim sklepie PrestaShop wprowadzić sortowanie, które umieści produkty dostępne w magazynie na początku listy, a niedostępne na końcu. To rozwiązanie ułatwia klientom przeglądanie oferty i zakup produktów, które mogą natychmiast zamówić, co z kolei zwiększa szanse na konwersję i poprawia wrażenia zakupowe.
Jeśli masz pytania dotyczące optymalizacji swojego sklepu w PrestaShop lub potrzebujesz wsparcia przy wdrażaniu powyższych rozwiązań, skontaktuj się z nami! Jesteśmy tu, aby pomóc Ci osiągnąć najlepsze wyniki. Zachęcamy również do zapoznania się z naszym cennikiem, gdzie znajdziesz szczegóły naszych usług i ofert.