Wyszukiwarka fasetowa (moduł ps_facetedsearch) to jeden z najważniejszych elementów nowoczesnego sklepu PrestaShop. Pozwala ona klientom szybko filtrować produkty według parametrów. Jednak użytkownicy korzystający z potężnego przyspieszenia, jakie daje LiteSpeed Cache na serwerach devhost.pl, często napotykają na frustrujący problem: filtry przestają działać, a strona nie reaguje na próby sortowania produktów.
Dlaczego LiteSpeed Cache gryzie się z filtrowaniem?
Problem wynika ze sposobu, w jaki LiteSpeed próbuje zbuforować dynamiczne zapytania wyszukiwarki. W wielu przypadkach standardowe ustawienia modułu cache "zamrażają" wyniki filtrów lub blokują zapytania AJAX, które odpowiadają za odświeżanie listy produktów bez przeładowania strony. Nawet wykluczenie parametrów URL (takich jak ?q=) w panelu konfiguracyjnym modułu LiteSpeed Cache często nie przynosi rezultatu.
Rozwiązanie: Kluczowa modyfikacja pliku Hook.php
Okazuje się, że źródłem konfliktu jest sposób, w jaki rdzeń PrestaShop przetwarza odpowiedzi z "haków" (hooks) podczas współpracy z LiteSpeedem. Rozwiązaniem, które działa niezależnie od używanego szablonu (również na popularnym szablonie Warehouse), jest prosta modyfikacja w plikach systemowych.
Instrukcja krok po kroku
Aby naprawić działanie filtrów fasetowych, wykonaj poniższe kroki:
- Zaloguj się na swój serwer FTP lub przez Menedżer Plików w panelu DirectAdmin.
- Przejdź do katalogu:
override/classes/ - Otwórz do edycji plik Hook.php (jeśli plik nie istnieje, upewnij się, że nie został nadpisany w innym miejscu lub stwórz odpowiedni override).
- Znajdź w kodzie następujący fragment:
if(is_string($html) || is_array($html) || ($html==null)){
return $html;
} else {
return ['object' => $html];
}
- Usuń powyższy fragment i zastąp go jedną, prostą linią:
return $html;
Dlaczego to działa?
Standardowy kod próbuje "opakować" wynik działania modułu w obiekt w określonych warunkach. LiteSpeed Cache do poprawnej pracy i serwowania zbuforowanej treści potrzebuje czystego wyniku (string/array). Uproszczenie tej instrukcji sprawia, że komunikacja między serwerem LiteSpeed a modułem filtrów staje się przejrzysta, co natychmiast przywraca stabilność fasetówki.
Ostatni krok: Czyszczenie pamięci podręcznej
Po zapisaniu zmian koniecznie wykonaj dwie czynności:
- Wyczyść cache w panelu modułu LiteSpeed Cache (przycisk Flush All) i w panelu administratora sklepu -> Wydajność - Wyczyść pamięć podręczną.
Dzięki tej zmianie Twój sklep na devhost.pl będzie działał błyskawicznie, a klienci będą mogli bez przeszkód korzystać z filtrów produktów. To rozwiązanie jest uniwersalne i eliminuje problem występujący w sklepach na całym świecie.