DF Recently Viewed: ostatnio oglądane produkty (PrestaShop 8/9)
Instalacja i konfiguracja bloku ostatnio oglądanych produktów: historia między urządzeniami, plakietki spadku ceny, renderowanie zgodne z full page cache, analityka i RODO.
Wprowadzenie
DF Recently Viewed (dfrecentlyviewed) wyświetla produkty ostatnio oglądane przez odwiedzających, ale w architekturze pomyślanej pod konwersję: historia jest przechowywana po stronie serwera, scalana z kontem klienta przy logowaniu, renderowana przez AJAX, aby pozostawała poprawna za cache strony, i wzbogacona o plakietki spadku ceny. Całość uzupełnia pulpit analityczny ze wskaźnikiem konwersji z odsłony na zakup.
Wymagania
- PrestaShop 8.0 do 9.x
- PHP 7.4 do 8.3
- Brak zależności zewnętrznych (ani Composer, ani jQuery, ani biblioteka karuzeli)
Instalacja
- W panelu administracyjnym otwórz Moduły > Menedżer modułów.
- Kliknij Wgraj moduł, a następnie wskaż plik
dfrecentlyviewed.zip. - Kliknij Zainstaluj. Moduł tworzy swoją tabelę, rejestruje hooki i dodaje zakładkę Katalog > Statystyki oglądanych produktów.
- Kliknij Konfiguruj, aby przejść do ustawień.
Moduł działa od razu po instalacji z sensownymi ustawieniami domyślnymi: 8 produktów, karuzela, renderowanie AJAX, włączone plakietki spadku ceny, retencja 90 dni.
Konfiguracja
Zakładka Wyświetlanie
- Tytuł bloku: tłumaczony na każdy z Twoich języków.
- Liczba produktów: od 1 do 24 produktów wyświetlanych w bloku.
- Układ karuzeli: włączony daje poziomą karuzelę ze strzałkami nawigacji, wyłączony daje responsywną siatkę.
- Pokazuj na kartach produktu: hook
displayFooterProduct. - Pokazuj na stronie głównej: hook
displayHome. - Pokazuj na stronie koszyka: hook
displayShoppingCartFooter. - Pokazuj link „wyczyść moją historię”: zalecane dla przejrzystości wobec RODO.
Zakładka Inteligentne zachowanie
- Wyklucz aktualnie wyświetlany produkt: unika polecania karty, która jest już na ekranie.
- Ukryj produkty niedostępne: filtr uwzględnia dozwolone przedsprzedaże.
- Ukryj produkty już w koszyku: koszyk jest przeliczany po stronie serwera, nigdy na podstawie strony z cache.
- Plakietki spadku ceny: wyświetlają plakietkę „-X %”, gdy cena spadła od ostatniego obejrzenia przez danego odwiedzającego.
- Renderowanie AJAX (zgodne z cache): mocno zalecane, patrz osobna sekcja poniżej.
- Retencja historii (dni): od 1 do 730 dni. Starsze odsłony są czyszczone automatycznie.
Zgodność z full page cache
W sklepie z Varnishem, Cloudflare, LiteSpeed Cache lub CDN blok spersonalizowany i renderowany po stronie serwera trafia do cache razem ze stroną: kolejny odwiedzający widzi cudzą historię albo pusty blok.
Tryb Renderowanie AJAX, włączony domyślnie, rozwiązuje ten problem: blok jest wstrzykiwany po wyrenderowaniu strony, zapytaniem do kontrolera front modułu. Śledzenie odsłony produktu wychodzi natomiast nieblokującym beaconem, który działa również wtedy, gdy strona pochodzi z cache.
Wyłącz tryb AJAX tylko wtedy, gdy Twój sklep nie używa żadnego cache stron. W przeciwnym razie blok będzie pokazywał nieprawidłowe dane.
Plakietki spadku ceny
Przy każdym obejrzeniu karty produktu moduł zapisuje cenę brutto wyświetloną w tym momencie temu konkretnemu odwiedzającemu. Przy wyświetlaniu bloku porównuje tę zapamiętaną cenę z ceną bieżącą:
- Jeżeli cena spadła o co najmniej 1 %, w lewym górnym rogu miniatury pojawia się czerwona plakietka „↓ -X %”.
- Zapamiętana cena jest aktualizowana przy każdym kolejnym obejrzeniu: plakietka zawsze oznacza więc „cena spadła od Twojej ostatniej wizyty na tej karcie”.
- Jeżeli cena wraca w górę, plakietka znika.
Historia między urządzeniami
Odsłony są zapisywane z identyfikatorem gościa (id_guest) dla odwiedzających anonimowych i z identyfikatorem klienta (id_customer) dla zalogowanych.
W momencie logowania (hook actionAuthentication) historia gościa jest scalana z kontem klienta: liczniki odsłon są sumowane, a zachowywana jest najpóźniejsza data ostatniego obejrzenia. Klient odnajduje w ten sposób oglądane produkty na wszystkich swoich urządzeniach.
Strona „Moja historia przeglądania”
Moduł dodaje kafelek w strefie klienta (hook displayCustomerAccount) prowadzący do dedykowanej strony, która wyświetla do 48 oglądanych produktów, z przyciskiem czyszczenia, jeżeli opcja jest włączona.
Adres strony: /module/dfrecentlyviewed/history (przepisywany zgodnie z Twoją konfiguracją adresów URL).
Widget
Blok można wywołać z dowolnego szablonu Twojego motywu:
{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}
Parametr limit jest opcjonalny i ograniczony do 24. Bez niego obowiązuje liczba ustawiona w panelu administracyjnym.
Pulpit analityczny
Przejdź do Katalog > Statystyki oglądanych produktów. Znajdziesz tam, w okresie 7, 30, 90 lub 365 dni:
- Odsłony produktów: łączna liczba zarejestrowanych wyświetleń.
- Liczba różnych oglądanych produktów: rzeczywisty zasięg odkrywania katalogu.
- Unikalni odwiedzający: goście i klienci łącznie.
- Konwersja z odsłony na zakup: odsetek par klient/produkt, które doprowadziły do prawidłowego zamówienia złożonego po obejrzeniu. Liczona wyłącznie na zalogowanych klientach.
- Najczęściej oglądane produkty: ranking z bezpośrednim linkiem do karty produktu w panelu.
RODO i retencja
Hooki psgdpr
Moduł implementuje actionExportGDPRData i actionDeleteGDPRCustomer: jeżeli oficjalny moduł psgdpr jest zainstalowany, historia przeglądania jest uwzględniana w eksportach i w usuwaniu danych osobowych na żądanie Twoich klientów.
Samodzielne czyszczenie
Gdy opcja jest włączona, obok tytułu bloku i na stronie historii pojawia się link „Wyczyść moją historię”. Odwiedzający może sam usunąć swoje dane, po potwierdzeniu.
Automatyczne czyszczenie
Odsłony starsze niż ustawiony okres retencji są usuwane automatycznie, w sposób oportunistyczny (przy około 1 % zapisywanych odsłon). Żadna konfiguracja nie jest potrzebna.
Opcjonalny CRON
Dla sklepów o dużym ruchu na stronie konfiguracji wyświetlany jest adres czyszczenia zabezpieczony tokenem. Możesz wywoływać go codziennie:
0 4 * * * curl -s "https://twoj-sklep.pl/module/dfrecentlyviewed/tracking?action=cleanup&token=TWOJ_TOKEN"
Integracja z motywem
Produkty są renderowane przez natywną miniaturę Twojego motywu (catalog/_partials/miniatures/product.tpl). Blok dziedziczy więc automatycznie wygląd Twoich list produktowych: zdjęcie, nazwa, cena, plakietki promocji, przycisk szybkiego dodania, jeżeli Twój motyw taki oferuje.
Jeżeli chcesz dostosować kontener, nadpisz szablony modułu z poziomu swojego motywu:
themes/twoj-motyw/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/twoj-motyw/modules/dfrecentlyviewed/views/templates/hook/_products.tpl
Tryb wielosklepowy
Historie są rozdzielone per sklep: odwiedzający, który obejrzał produkt w sklepie A, nie zobaczy go w sklepie B. Wszystkie ustawienia są zapisywane przez tabelę Configuration PrestaShop, z natywną obsługą trybu wielosklepowego.
Deinstalacja
Deinstalacja usuwa tabelę historii, wszystkie ustawienia i zakładkę statystyk. Przed operacją wymagane jest potwierdzenie.
Rozwiązywanie problemów
Blok się nie pojawia
- Sprawdź, czy hook odpowiadający danej stronie jest włączony w konfiguracji (karta produktu, strona główna, koszyk).
- Blok wyświetla się tylko wtedy, gdy odwiedzający obejrzał co najmniej jeden kwalifikujący się produkt. Odwiedzający, który trafia do sklepu po raz pierwszy, nie zobaczy nic.
- Jeżeli wykluczenie bieżącego produktu i wykluczenie koszyka są włączone jednocześnie, może się zdarzyć, że nie zostanie żaden produkt do wyświetlenia.
Blok pozostaje pusty na stronie z cache
Upewnij się, że tryb Renderowanie AJAX jest włączony. Sprawdź także, czy Twoja konfiguracja cache nie przechwytuje zapytań do /module/dfrecentlyviewed/tracking.
Plakietki spadku ceny nigdy się nie pokazują
Plakietka może się pojawić tylko wtedy, gdy odwiedzający obejrzał produkt przed spadkiem ceny. Po zmianie cennika daj odwiedzającym czas na powrót. Sprawdź także, czy opcja jest rzeczywiście włączona.