Jeśli PrestaShop pokazuje produkty w złej kolejności po wybraniu „od najtańszych”, trzeba porównać cenę widoczną dla klienta z danymi używanymi do sortowania. W sklepie z modułem Nawigacja fasetowa znaczenie mogą mieć promocje, indeks cen i kontekst klienta. Samo wyczyszczenie cache nie wyjaśnia, dlaczego problem powraca.
Dlaczego poprawna cena może stać w niewłaściwym miejscu?
Załóżmy, że produkt A kosztował 79 zł, a po rabacie kosztuje 49 zł. Produkt B kosztuje 59 zł. Przy sortowaniu rosnącym A powinien znaleźć się przed B. Jeśli lista korzysta z nieaktualnej wartości 79 zł, kolejność będzie odwrotna, chociaż na karcie produktu zobaczymy poprawne 49 zł. To przykład mechanizmu, a nie dane z konkretnego sklepu.
Indeks cen to pomocniczy zestaw danych wykorzystywany przez moduł do filtrowania i sortowania katalogu. Jego aktualność trzeba sprawdzać oddzielnie od poprawności samej ceny na stronie. Cache przechowuje wcześniej przygotowany wynik lub zawartość. Usunięcie cache i przebudowa indeksu to różne operacje, nawet gdy obie wykonujemy podczas jednego wdrożenia. Mechanizm indeksowania można prześledzić w kodzie modułu ps_facetedsearch.
Cena zależy też od warunków zakupu: sklepu w multistore, waluty, kraju, podatku, grupy klientów czy wybranego wariantu. Sortowanie trzeba więc oceniać według ceny, którą widzi użytkownik w testowanym scenariuszu. Oficjalne zgłoszenie dotyczące sortowania i cen dla grup klientów pokazuje, że rozbieżność między wartością w indeksie a ceną dla konkretnego odbiorcy może zaburzać kolejność. Nie każdy taki objaw ma jednak tę samą przyczynę.
Przypadek z naszej praktyki: promocje i nieaktualny indeks
W jednym z obsługiwanych sklepów problem dotyczył sortowania po cenie po zmianach promocji. Przeanalizowaliśmy moduł Nawigacja fasetowa i sposób odświeżania jego indeksu. Poprawka objęła aktualizowanie danych po dodaniu, zmianie i usunięciu ceny promocyjnej oraz obsługę zmian wynikających z dat promocji.
Wdrożenie wymagało również wykonania aktualizacji modułu, aby zarejestrować mechanizmy wywoływane przy zmianach danych. Następnie przebudowaliśmy indeks cen i wyczyściliśmy właściwe warstwy cache. Samo skopiowanie plików nie zamykało całej procedury.
Na produkcji sprawdziliśmy 251 produktów w jednej kategorii, rozłożonych na 21 stronach. Kontrola objęła sortowanie rosnące i malejące, również przejścia między stronami. Porównywaliśmy aktualne ceny promocyjne widoczne dla klienta, a nie ceny przekreślone. W tym przebiegu nie wystąpiły błędy kolejności.
To potwierdzało poprawność bieżącego sortowania po wdrożeniu i przebudowie indeksu. Osobny, kontrolowany test przejścia przez datę rozpoczęcia lub zakończenia promocji pozostawał do wykonania. Nie utożsamiamy sprawdzenia aktualnej listy z potwierdzeniem wszystkich przyszłych scenariuszy cenowych.
Jak diagnozować błędne sortowanie po cenie?
- Zapisz warunki odtworzenia. Kategoria, kierunek sortowania, numer strony, waluta i status logowania pozwalają porównać ten sam wynik przed naprawą i po niej.
- Wskaż konkretną parę produktów. Zanotuj aktualne ceny i oczekiwaną kolejność. Informacja „sortowanie nie działa” utrudnia sprawdzenie przyczyny.
- Ustal źródło listy. Sprawdź moduł filtrów, dostawcę wyników wyszukiwania, modyfikacje oraz zgodność ich wersji z PrestaShop.
- Porównaj promocję z indeksem. Czy rabat został zapisany, ale indeks nadal zawiera wcześniejszą cenę? Czy dotyczy wszystkich klientów, czy tylko konkretnej grupy?
- Sprawdź sposób odświeżania. Dodanie promocji, jej edycja, usunięcie i wygaśnięcie to oddzielne zdarzenia. Upływ czasu nie jest tym samym co ręczny zapis produktu.
- Zweryfikuj cały wynik. Poprawna pierwsza strona nie wyklucza błędu na granicy stron ani w drugim kierunku sortowania.
Co powinien obejmować test po naprawie?
Próba powinna uwzględniać produkt bez promocji, rabat dodany i zmieniony, promocję usuniętą oraz promocję z datą początku i końca. W sklepie z wieloma walutami, grupami klientów lub witrynami dochodzą właściwe warianty tych warunków. Zakres dobieramy do konfiguracji sklepu; nie wystarczy sprawdzić ceny jako administrator i uznać, że każdy klient widzi ten sam wynik.
Porównujemy porządek na kolejnych stronach, liczbę produktów i widoczne ceny. Po przebudowie trzeba potwierdzić jej zakończenie, a nie tylko uruchomienie zadania. W starszych instalacjach plan naprawy powinien uwzględniać kompatybilność modułów. Aktualizacja do najnowszego dostępnego wydania nie zawsze jest bezpośrednio możliwa.
Najczęstsze pytania
Czy czyszczenie cache wystarczy?
Może pomóc, jeśli problemem jest zapisany wynik listy. Gdy nieaktualne dane znajdują się w indeksie cen, potrzebne jest jego odświeżenie i ustalenie, dlaczego nie aktualizował się przy zmianie promocji.
Czy przebudowę indeksu należy wykonywać po każdej promocji?
Docelowo dane powinny być odświeżane w sposób odpowiedni dla używanego modułu i konfiguracji. Ręczna, pełna przebudowa może być krokiem naprawczym, ale warto sprawdzić także aktualizację pojedynczych produktów i obsługę promocji czasowych.
Potrzebujesz sprawdzenia swojego sklepu?
Jeśli po promocji, aktualizacji lub zmianie modułu produkty przestały sortować się prawidłowo, skontaktuj się z Projectic. Podaj adres kategorii, dwa przykładowe produkty i warunki, w których występuje błąd. Ułatwi to rozpoczęcie diagnozy i określenie zakresu prac. Zobacz również nasze realizacje związane z PrestaShop.