Wiele z tego, o co sprzedawcy proszą SDK, jest już dostępne jako ustawienie. Zanim napiszesz skrypt, sprawdź, czy blok koszyka, warunki według rynku/kraju/waluty lub ustawienie koszyka już to robi. One działają dalej po przeprojektowaniu koszyka, a Twój skrypt może przestać.
Globalny punkt wejścia
Każdy fragment kodu w tej dokumentacji zapisuje
window.aftersell.cart w pełnej formie, więc każdy z nich działa samodzielnie po wklejeniu. Jednorazowe utworzenie aliasu (const cart = window.aftersell.cart;) i używanie dalej cart jest w pełni poprawne i bezpieczne nawet przed załadowaniem koszyka. Pamiętaj tylko, aby dołączyć tę linię, jeśli skracasz fragment, ponieważ samo cart bez niej rzuca błąd cart is not defined.Configure
Ustaw zachowanie koszyka: kiedy otwiera się szuflada, jak formatowane są kwoty, czy Aftersell przechwytuje dodawanie do koszyka.
Events
Reaguj na to, co się dzieje: koszyk się załadował, dodano produkt, otwarto szufladę, kliknięto checkout.
Actions
Odczytuj i zmieniaj koszyk: otwórz go, dodaj produkt, zaktualizuj ilość, odczytaj bieżący stan.
Hooks
Zmieniaj sposób działania samego koszyka: ukrywaj lub zmieniaj etykiety pozycji, zmieniaj ich kolejność, dołączaj dodatkowe dane, kontroluj dodawanie do koszyka.
Jeśli któryś z Twoich skryptów przestał odpalać się przy add-to-cart, zacznij od Przechwytywania add-to-cart. Wyjaśnia, dlaczego Aftersell przejmuje dodawanie, i wszystkie sposoby, by wyłączyć z tego pojedynczy formularz.
Zdarzenia, akcje czy hooki?
Najważniejsza różnica: akcja zmienia rzeczywisty koszyk kupującego (i jego sumę), podczas gdy hook zmienia tylko to, co się renderuje. Ukrycie pozycji hookiem pozostawia ją w koszyku i w sumie; usunięcie jej akcją wyjmuje ją naprawdę.
Jak i kiedy się ładuje
- Mały stub tworzy
window.aftersell.cartnatychmiast, więc obiekt zawsze istnieje. - Pełne SDK ładuje się chwilę później i przejmuje kontrolę, ulepszając stub w miejscu, więc wcześniej zapisana referencja nadal działa.
Wywołania konfiguracyjne: bezpieczne od razu
configure(...), events.on(...) i każde wywołanie hooks.register*. Buforowane przed startem i odtwarzane w kolejności po załadowaniu SDK. Umieszczaj je na początku skryptu.Akcje: poczekaj na ready()
Wszystko pod
actions.*. Uruchamiaj je wewnątrz ready() lub obsługi zdarzenia. Wywołane zbyt wcześnie wypisują ostrzeżenie w konsoli i nic nie robią — bezpiecznie: te asynchroniczne i tak się rozwiązują, więc łańcuch .then() się nie zepsuje.ready()
ready() zwraca Promise, który rozwiązuje się, gdy pierwsze ładowanie koszyka się zakończy. Rozwiązuje się zarówno przy niepowodzeniu, jak i sukcesie, więc kupujący z niestabilnym połączeniem nigdy nie zostawi Twojego skryptu w zawieszeniu. Sprawdzaj, czy getCart() zwraca null, zamiast zakładać, że koszyk dotarł.
Wywołanie ready() po tym, jak koszyk już się załadował, rozwiązuje się natychmiast, więc można go bezpiecznie używać jako ogólnej bramki „koszyk już istnieje” w dowolnym miejscu kodu.
context
window.aftersell.cart.context przechowuje dane kupującego renderowane przez serwer, dostępne synchronicznie, bez potrzeby ready(). Używaj go do rozgałęzień według rynku lub kraju, które muszą nastąpić przed załadowaniem koszyka.
Aby pokazywać różne ustawienia bloków według rynku, kraju lub waluty, użyj zamiast tego warunków w edytorze koszyka. Skrypt nie jest potrzebny. Pełny interfejs warunków jest dziś dostępny w Rewards.
shadowRoot
document.querySelector nie widzi niczego wewnątrz szuflady. Aby dosięgnąć elementu w koszyku, odpytaj shadow root:
cart-external-*, których używa Custom CSS. To są wspierane uchwyty. Bliźniacze klasy cart-internal-* to wewnętrzna maszyneria koszyka, więc odpytuj zamiast nich te zewnętrzne.
Shadow root istnieje dopiero po starcie koszyka, więc odczytuj go wewnątrz ready() lub obsługi zdarzenia, a nie na początku skryptu.
Debugowanie
Gdy Twój skrypt rzuca błąd
configure, events.on i hooks.register* poniżej tej linii nigdy się nie uruchamia. Koszyk mówi o tym wprost:
aftersell-cart-init.js i aftersell-cart-cart-update.js. Możesz otworzyć je w panelu Sources i ustawiać punkty przerwania jak w każdym innym pliku.
Kanał debugowania
Co dalej
Configure
Każda opcja, z przykładem dla każdej.
Events
Każde zdarzenie, kiedy się odpala i czego nie robić w obsłudze.
Actions
Każda akcja, z fragmentem kodu dla każdej.
Hooks
Każdy hook i jak rejestracje się składają.
Obiekt koszyka
Struktura koszyka i jego pozycji.
Przypadki użycia
Kompletne, gotowe do uruchomienia rozwiązania częstych próśb.