Jak w PrestaShop sprawić, by produkty niedostępne były wyświetlane na końcu?

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

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().

produktu nie dostępne na końcu kategorii

Modyfikacja sortowania, aby produkty niedostępne były na końcu

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());

Jak działa ta zmiana?

  1. CASE WHEN: To wyrażenie w SQL sprawdza ilość produktu w magazynie (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).
    • p.quantity > 0: Produkty dostępne (ilość większa niż 0) otrzymują wartość 1.
    • p.quantity = 0: Produkty niedostępne otrzymują wartość 0.
  2. DESC: Dzięki temu produkty z wartością 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.
  3. Dalsze sortowanie: Po posortowaniu według dostępności, zapytanie SQL nadal sortuje produkty według wybranego pola, np. ceny, nazwy czy daty dodania, co umożliwia dalsze precyzyjne uszeregowanie produktów.

Praktyczne korzyści z tej modyfikacji

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.

Jak wprowadzić zmianę w PrestaShop?

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.

Zamów wycenę
Polityka prywatności | Regulamin
Pro-link 2005-2020