PS PrestaShop Początkujący

dfsavecart: zapis koszyka magicznym linkiem

Instalacja, konfiguracja i użytkowanie modułu zapisu koszyka magicznym linkiem dla PrestaShop 8 i 9.

Zaktualizowano Wersja modułu 1.0.0

Prezentacja

dfsavecart dodaje funkcję „Zachowaj na później” na stronie koszyka Twojego sklepu PrestaShop 8 albo 9. Odwiedzający, zalogowany albo gość, podaje swój adres e-mail i otrzymuje bezpieczny link („magiczny link”), który odtwarza jego dokładny koszyk: te same produkty, te same ilości, na dowolnym urządzeniu, w dowolnym momencie w skonfigurowanym okresie ważności.

Moduł jest nieinwazyjny: nie wpływa na ścieżkę zamówienia, checkout ani inne moduły. Działa z natywnym systemem e-mail PrestaShop, a więc z Twoim istniejącym SMTP.

Wymagania

  • PrestaShop 8.0.x do 9.x
  • PHP 8.1 albo nowsze
  • MySQL 5.7+ albo MariaDB 10.3+
  • Działająca wysyłka e-mail (Parametry zaawansowane > E-mail: przetestuj wysyłkę przed instalacją modułu)

Instalacja

  1. Pobierz plik dfsavecart.zip ze swojego konta DataFirefly.
  2. W back office PrestaShop przejdź do Moduły > Menedżer modułów.
  3. Kliknij Wgraj moduł i wybierz plik ZIP.
  4. PrestaShop instaluje moduł automatycznie: tworzona jest tabela ps_df_savecart, a hooki zostają zarejestrowane.
  5. Kliknij Konfiguruj, aby przejść do ustawień.

Nie jest instalowany żaden override klasy ani kontrolera: deinstalacja jest czysta i nie zostawia śladów (tabela i konfiguracje są usuwane).

Konfiguracja

Wszystkie ustawienia mieszczą się na jednej stronie: Moduły > Menedżer modułów > dfsavecart > Konfiguruj.

Ustawienia główne

  • Włącz moduł: wyłącznik ogólny. Po wyłączeniu blok znika z frontu bez deinstalacji modułu.
  • Pozycja przycisku: Stopka koszyka (zalecane, hook displayShoppingCartFooter), Wewnątrz koszyka (hook displayShoppingCart) albo Oba miejsca. Wybór zależy od Twojego motywu: po zmianie sprawdź render na stronie koszyka.
  • Czas ważności linku: od 1 do 365 dni, domyślnie 30. Po tym czasie link wygasa, a wpis jest usuwany.

Bezpieczeństwo i ochrona przed spamem

  • Limit na adres e-mail dziennie: maksymalna liczba wysyłek na ten sam adres w ruchomym oknie 24 h (domyślnie 10). Wpisz 0, aby wyłączyć. Licznik opiera się na solonym hashu adresu: adres nie jest przechowywany jawnie na potrzeby tej funkcji.
  • Link jednorazowy: po włączeniu link staje się nieważny po pierwszym odtworzeniu. Przydatne przy koszykach o charakterze poufnym (B2B, oferty).

Zachowanie przy odtwarzaniu

  • Opróżnij bieżący koszyk przed odtworzeniem: włączone domyślnie. Po wyłączeniu produkty z linku dopisują się do bieżącego koszyka (kumulacja).

RODO i e-mail

  • Wymagaj zgody RODO: wyświetla obowiązkowe pole wyboru przed wysyłką (włączone domyślnie, zalecane).
  • Wyślij kopię ukrytą do sprzedawcy: dodaje adres kontaktowy sklepu w polu BCC przy każdej wysyłce, na potrzeby wewnętrznego śledzenia.
  • Temat e-maila (per język): konfigurowalny dla każdego aktywnego języka sklepu. Dostępne zmienne: {shop_name} i {firstname}.

Działanie po stronie klienta

  1. Klient dodaje produkty do koszyka i otwiera stronę koszyka.
  2. Widzi blok „Zachowaj ten koszyk na później” z polem e-mail (wypełnionym automatycznie, jeśli jest zalogowany).
  3. Podaje adres e-mail, zaznacza zgodę, jeśli jest wymagana, i klika Wyślij link.
  4. Otrzymuje e-mail z podsumowaniem koszyka (produkty, ilości, szacowana suma), datą wygaśnięcia i przyciskiem Odtwórz mój koszyk.
  5. Kliknięcie przycisku odtwarza dokładny koszyk i przekierowuje na stronę koszyka z komunikatem potwierdzającym.

Przypadki szczególne przy odtwarzaniu

  • Produkt wyłączony albo usunięty: pozycja jest pomijana, a klient dostaje komunikat z listą niedostępnych produktów.
  • Niewystarczający stan magazynowy: ilość jest korygowana do dostępnego maksimum, z komunikatem informującym o korekcie.
  • Link wygasły albo już użyty (tryb jednorazowy): wyświetla się prosta strona błędu z odnośnikami do bieżącego koszyka i strony głównej.
  • Język i waluta: odtwarzane są te z pierwotnego koszyka.

E-maile

Szablony HTML i tekstowe są dostarczane po francusku, angielsku, hiszpańsku i niemiecku w modules/dfsavecart/mails/{iso}/savecart.html oraz savecart.txt. Używany jest język koszyka z momentu zapisu.

Zmienne dostępne w szablonach: {firstname}, {shop_name}, {restore_link}, {cart_items_html}, {cart_items_txt}, {cart_total}, {expiry_date}.

Aby personalizacja szablonów przetrwała aktualizacje, skopiuj je do katalogu mails swojego motywu, zamiast modyfikować te dostarczone z modułem: te zostaną nadpisane przy aktualizacji.

Bezpieczeństwo

  • Token 256-bitowy: generowany przez random_bytes(32), kryptograficznie bezpieczny generator PHP. 64 znaki szesnastkowe w adresie URL.
  • Przechowywanie w postaci hasha: w bazie zapisywany jest wyłącznie odcisk SHA-256 tokenu. W razie naruszenia bazy danych nie da się odtworzyć żadnego linku.
  • CSRF: endpoint AJAX zapisu weryfikuje token sesji PrestaShop.
  • Ścisła walidacja: format tokenu jest sprawdzany po stronie serwera ([a-f0-9]{64}) przed jakimkolwiek zapytaniem do bazy.

RODO

  • Jawna zgoda przed wysłaniem e-maila, konfigurowalna.
  • Na potrzeby limitu antyspamowego adres e-mail nie jest przechowywany jawnie: używany jest wyłącznie solony hash (z sekretnym kluczem sklepu).
  • Wygasłe wpisy są usuwane automatycznie (czyszczenie): patrz sekcja poniżej.
  • Żadne dane nie są przekazywane usługom zewnętrznym: wszystko zostaje w Twojej bazie PrestaShop.
  • W razie żądania usunięcia danych przez klienta usuń jego wiersze z tabeli ps_df_savecart (kolumna email).

Czyszczenie wygasłych linków

Trzy możliwości, od najprostszej do najbardziej zautomatyzowanej:

  1. Przycisk ręczny: na stronie konfiguracji modułu, „Wyczyść wygasłe wpisy”.
  2. Moduł CronJobs: zainstaluj bezpłatny moduł CronJobs od PrestaShop: hook actionCronJob modułu jest wywoływany automatycznie i uruchamia czyszczenie.
  3. Systemowy crontab: zaplanuj regularne wywołanie crona swojego sklepu zgodnie z konfiguracją serwera.

Statystyki

Strona konfiguracji pokazuje cztery liczniki w czasie rzeczywistym: łącznie zapisanych, aktywnych (niewygasłych), wygasłych (oczekujących na wyczyszczenie) i odtworzonych (linki użyte co najmniej raz). Stosunek odtworzonych do łącznej liczby daje współczynnik konwersji tej funkcji.

Multistore

Moduł jest zgodny z multistore: każdy zapis zapamiętuje identyfikator sklepu źródłowego, używany przy odtwarzaniu. Konfiguracja odbywa się w standardowym kontekście sklepu PrestaShop.

Rozwiązywanie problemów

E-mail nie dociera

  • Sprawdź globalną wysyłkę e-mail sklepu: Parametry zaawansowane > E-mail > Przetestuj wysyłkę.
  • Sprawdź folder spam u odbiorcy.
  • Zajrzyj do logów: Parametry zaawansowane > Logi (błędy modułu mają prefiks [dfsavecart]).

Blok nie pojawia się na stronie koszyka

  • Sprawdź, czy moduł jest włączony w swojej konfiguracji.
  • Sprawdź, czy koszyk zawiera przynajmniej jeden produkt (przy pustym koszyku blok jest ukrywany).
  • Sprawdź wybraną pozycję: niektóre motywy nie implementują hooka displayShoppingCartFooter, przełącz się wtedy na „Wewnątrz koszyka” albo „Oba miejsca”.
  • Wyczyść cache: Parametry zaawansowane > Wydajność > Wyczyść cache.

Komunikat „Nieprawidłowy token bezpieczeństwa”

  • Strona koszyka pozostawała otwarta zbyt długo i sesja wygasła: odśwież stronę i spróbuj ponownie.

Komunikat „Zbyt wiele żądań dla tego adresu”

  • Dzienny limit antyspamowy dla tego adresu został osiągnięty. Zwiększ limit w konfiguracji albo odczekaj 24 h.

Deinstalacja

Deinstalacja usuwa tabelę ps_df_savecart (wszystkie zapisane koszyki przepadają) oraz wszystkie klucze konfiguracji. W bazie ani w plikach nie zostają żadne resztki.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia