Zmiana Wariantu w Koszyku PrestaShop: instalacja i konfiguracja
Instalacja i konfiguracja zmiany kombinacji w koszyku: tryby wyświetlania, stan magazynowy, kontrole po stronie serwera, historia i integracja z motywem.
Przegląd
Moduł pozwala klientowi zmienić kombinację produktu (rozmiar, kolor lub inny atrybut) bezpośrednio na stronie koszyka, bez usuwania wiersza. Nowa kombinacja zachowuje ilość, adres dostawy i pozycję wiersza. Stan magazynowy i minimalna ilość są sprawdzane przez serwer przed zamianą.
Instalacja
- W Moduły > Menedżer modułów kliknij Załaduj moduł i wyślij plik
dfcartcombination-1.0.0.zip. - Moduł podpina się pod hooki
displayCartExtraProductActionsiactionFrontControllerSetMediaoraz tworzy tabelęps_dfcartcombination_logna potrzeby historii. - Otwórz konfigurację modułu. Domyślnie wszystko jest włączone, w trybie przycisku z oknem.
- Dodaj do koszyka produkt z co najmniej dwiema kombinacjami i otwórz stronę koszyka, aby sprawdzić wyświetlanie. Jeśli nic się nie pojawia, wyczyść pamięć podręczną w Zaawansowane > Wydajność.
Ustawienia
- Włącz moduł: po wyłączeniu na stronie koszyka nic nie jest ładowane.
- Tryb wyświetlania: Przycisk z oknem wyboru (jeden link „Zmień” na wiersz) lub Listy rozwijane w wierszu koszyka (jedna lista na grupę atrybutów, zmiana stosowana od razu po wyborze).
- Umieść pod atrybutami produktu: przenosi selektor pod atrybuty wiersza. Wyłącz, aby zostawić go tam, gdzie motyw wywołuje hook, zwykle w kolumnie akcji obok kosza.
- Pokaż cenę dla każdej kombinacji: cena wybranej kombinacji, przekreślona cena przy rabacie i różnica względem bieżącego wiersza. Cena jest zgodna z wyświetlaniem brutto lub netto dla grupy klienta.
- Pokaż stan magazynowy: W magazynie, Zostało tylko X, Dostępne na zamówienie lub Brak w magazynie. Komunikat „Zostało tylko X” korzysta z progu pozostałej ilości ustawionego w PrestaShop. Nic nie jest wyświetlane, gdy zarządzanie stanami jest wyłączone.
- Pokaż zdjęcie kombinacji: pierwsze zdjęcie przypisane do kombinacji, w przeciwnym razie zdjęcie główne produktu.
- Niedostępne kombinacje: Pokaż jako nieaktywne lub Ukryj. Wartość bieżącego wiersza jest zawsze widoczna.
- Wykluczone produkty: ID produktów oddzielone przecinkami. Selektor nie pojawia się dla tych produktów, a serwer odrzuca każdą zmianę.
- Kolor akcentu: kolor głównego przycisku i wybranych wartości.
- Zapisuj historię zmian: zasila statystyki widoczne pod formularzem.
Po stronie klienta
Tryb okna
Przycisk Zmień otwiera okno ze zdjęciem kombinacji, nazwą produktu i ilością z wiersza. Grupy atrybutów są w kolejności z katalogu:
- grupy typu kolor: próbki, z teksturą atrybutu, jeśli istnieje;
- grupy typu radio lub lista: przyciski, a powyżej 8 wartości lista rozwijana.
Na dole cena, różnica ceny i stan magazynowy wyboru aktualizują się przy każdym kliknięciu. Przycisk Zaktualizuj koszyk pozostaje nieaktywny, dopóki wybór jest taki sam jak w wierszu lub niedostępny. Okno zamyka się klawiszem Escape, krzyżykiem lub kliknięciem poza nim, a obsługa z klawiatury działa strzałkami między wartościami grupy. Na telefonie okno wysuwa się od dołu ekranu.
Tryb list rozwijanych
Każda grupa atrybutów staje się listą w wierszu. Zmiana jest wysyłana od razu po wyborze wartości. Wiersze atrybutów, które motyw już wyświetla (na przykład „Rozmiar: S”), są ukrywane, aby nie dublować informacji. Komunikat pod listami pokazuje trwającą aktualizację lub ewentualny błąd.
Nieistniejąca kombinacja
Jeśli wybrana wartość nie istnieje z pozostałymi wybranymi atrybutami (np. brak M Niebieski w katalogu), moduł przechodzi na istniejącą kombinację zawierającą tę wartość, która zachowuje najwięcej obecnych atrybutów, w pierwszej kolejności taką, którą można zamówić.
Kontrole przed zamianą
Przeglądarka wysyła produkt, bieżącą kombinację i wybraną kombinację. Serwer sprawdza następnie:
- token sesji;
- czy produkt jest aktywny i dostępny do zamówienia oraz czy tryb katalogu jest wyłączony;
- czy wybrana kombinacja należy do produktu i sklepu;
- czy pierwotny wiersz nadal jest w koszyku, bez personalizacji;
- czy produkt nie jest powiązany z regułą koszyka z prezentem w tym koszyku;
- czy ilość końcowa osiąga minimalną ilość kombinacji;
- czy stan magazynowy pokrywa ilość końcową, chyba że sprzedaż przy braku towaru jest dozwolona dla produktu.
Nowa kombinacja jest dodawana natywną metodą updateQty, a następnie stara jest usuwana metodą deleteProduct. Jeśli usunięcie się nie powiedzie, dodanie zostaje cofnięte. Jeśli wybrana kombinacja jest już w koszyku, ilości są sumowane w jednym wierszu. W przeciwnym razie nowy wiersz przejmuje datę dodania starego, aby zachować swoje miejsce w koszyku.
Po zamianie moduł wywołuje zdarzenie updateCart PrestaShop. Motyw przeładowuje wtedy listę, sumy i mini koszyk. Jeśli motyw nie zareaguje w ciągu 3 sekund, strona zostanie przeładowana.
Wiersze, których to nie dotyczy
- produkty bez kombinacji lub z jedną kombinacją;
- wiersze z personalizacją (tekst, plik);
- produkty dodane gratis przez regułę koszyka;
- produkty wykluczone w konfiguracji.
Historia i statystyki
Pod formularzem konfiguracji blok Historia zmian pokazuje:
- liczbę zmian i koszyków objętych zmianą w ciągu 30 dni;
- liczbę zmienionych koszyków zamienionych w zamówienia, wraz z odsetkiem;
- 10 najczęściej zmienianych produktów;
- 20 ostatnich zmian, z kombinacją początkową i wybraną.
Przycisk Wyczyść historię usuwa dane bieżącego sklepu. Produkt często zmieniany na większy rozmiar wskazuje na tabelę rozmiarów lub kartę produktu do poprawy.
Motywy i dostosowanie
Motyw Classic i większość motywów od niego pochodnych wywołuje displayCartExtraProductActions w każdym wierszu koszyka. Jeśli Twój motyw go nie wywołuje, skrypt tworzy selektor na podstawie linków usuwania wierszy (data-id-product i data-id-product-attribute). Plik JavaScript jest ładowany tylko na stronie koszyka.
Aby dostosować wygląd, nadpisz w CSS motywu zmienne --dfcc-accent, --dfcc-text i --dfcc-border albo klasy .dfcc-edit, .dfcc-modal__dialog i .dfcc-option.
Przy mocno zmodyfikowanym motywie lub module koszyka bocznego przetestuj zmianę kombinacji na kopii sklepu, jako gość i jako zalogowany klient.
Dla programistów
Po każdej udanej zmianie moduł wykonuje hook actionDfCartCombinationChange z parametrami cart, id_product, id_product_attribute_from, id_product_attribute_to i quantity. Moduł zewnętrzny może się do niego podpiąć, aby synchronizować CRM lub narzędzie analityczne.
Znane ograniczenia
- W wersji 1.0.0 wiersze z personalizacją zachowują swoją kombinację.
- Zmiana odbywa się na stronie koszyka, nie w podsumowaniu procesu zamówienia ani w mini koszyku.
- Moduł koszyka bocznego, który nie korzysta ze zdarzenia
updateCart, aktualizuje się dopiero po przeładowaniu strony.