window.aftersell.cart.hooks.
Hook zmienia to, co klient widzi; akcja zmienia to, co jest w jego koszyku. Ukrycie pozycji darmowego prezentu transformacją zostawia ją w koszyku i w sumie. Usunięcie jej za pomocą
removeItem usuwa ją naprawdę.Hooki to wywołania konfiguracyjne, więc można je bezpiecznie rejestrować na samej górze skryptu, bez czekania na
ready(). Rejestruj je w skrypcie Initialization swojego koszyka (zobacz Niestandardowe skrypty).Jak działa rejestracja
register*. Wywołujesz ją ze swoją funkcją; zwraca funkcję wyrejestrowującą, którą możesz wywołać, aby usunąć swoją.
Hook, który rzuca wyjątek lub nie jest funkcją, jest pomijany; reszta nadal działa, a koszyk pracuje dalej. Jedna zepsuta integracja nie może wyłączyć add-to-cart, selektora subskrypcji ani sortowania.
Druga strona medalu: Twój zepsuty hook zawodzi po cichu — nic nie trafia do konsoli przeglądarki. Zobacz Debugowanie, gdzie te awarie jednak się ujawniają.
registerLineTransform
registerLineTransform(fn) uruchamia się dla każdej pozycji koszyka przed jej wyrenderowaniem. Użyj go, aby ukryć pozycję lub zmienić sposób jej prezentacji, bez dotykania tego, co faktycznie jest w koszyku klienta.
Funkcja otrzymuje pozycję tylko do odczytu plus settery. Zwraca funkcję wyrejestrowującą.
setInternalProperties to setter stojący za grupowaniem zestawów: nadanie każdej pozycji kanonicznych właściwości zestawu to sposób, by osobne pozycje koszyka z aplikacji zewnętrznej renderowały się jako jeden produkt. Zobacz Grupowanie pozycji zestawów z innej aplikacji.
registerLineComparator
Array.prototype.sort. Uruchamia się po ukrywaniu i zmianie nazw, więc widzi przetransformowane pozycje.
0 dla par, o których nie masz zdania. To właśnie przekazuje decyzję następnemu komparatorowi, zamiast narzucać mu kolejność.
Używaj do: wynoszenia subskrypcji lub produktów o wysokiej wartości na górę, spychania darmowych prezentów i dodatków na dół, utrzymywania sponsorowanego produktu na pierwszym miejscu.
registerCartEnricher
registerCartEnricher(registration) pobiera dodatkowe dane produktu lub wariantu z API Storefront Shopify i dołącza je do każdej pasującej pozycji koszyka pod line.metadata[id]. Użyj go, aby pokazać metafields, tagi lub cokolwiek innego, co udostępnia API Storefront, bez żadnej zmiany kodu po stronie Aftersell.
Zwraca funkcję wyrejestrowującą.
Zawsze gdy koszyk się ładuje lub zmienia, Aftersell pobiera Twój fragment dla każdego produktu lub wariantu w koszyku i dołącza wynik. Pobieranie jest nieblokujące: koszyk renderuje się natychmiast i ponownie emituje
cart_updated, gdy dane dotrą. Wolny lub zawodzący fragment nigdy nie opóźnia ani nie psuje koszyka.
line.metadata.pricing jest undefined, dopóki pierwsze pobranie się nie rozwiąże, a metadata domyślnie ma wartość {}.
Używaj do: pobierania metafield na każdą pozycję (szacowany czas dostawy, lista składników, flaga „wysyłane osobno”, mnożnik lojalnościowy) i renderowania go przez blok Custom code. Zobacz pokazywanie danych metafield na pozycjach koszyka.
Wiele wzbogacaczy współistnieje bezproblemowo, ponieważ każde
id to osobna przestrzeń nazw, więc ich dane nigdy się nie zderzają.registerSubscriptionOptionsTransform
options.filter(...) i po drodze po cichu usunęłaby plany każdej innej aplikacji. Dzięki setterom możesz opisać tylko własne zmiany: poprawki scalają się per plan i per pole, a ostatni piszący wygrywa faktyczny konflikt na tym samym polu tego samego planu. Transformacja, która rzuca wyjątek, nic nie wnosi, a pozostałe nadal się stosują.
Każda transformacja widzi oryginalne opcje, a nie częściowo załatany widok, więc kolejność rejestracji nie zmienia tego, co czytasz.
Kolejność planów pozostaje taka, jaką zwrócił Shopify, więc transformacja nie może zmienić kolejności. Aby kontrolować, który plan jest oferowany jako pierwszy (i który subskrybuje przycisk uaktualnienia zakupu jednorazowego), użyj
registerDefaultSubscriptionOptionSelector, który przenosi swój wybór na początek.discountPercent nie ma settera, ponieważ plan, którego Shopify nie zrealizuje przy checkoucie, byłby w selektorze tylko pustą obietnicą.
registerDefaultSubscriptionOptionSelector
id planu lub null, aby przekazać decyzję dalej.
null dla pozycji, które Cię nie interesują, zamiast zgadywać. To przekazuje decyzję następnemu selektorowi, zamiast go nadpisywać. Id, które nie pasuje do żadnego planu na pozycji, jest traktowane tak samo jak null i też ustępuje, więc nieaktualne id nie może wyczyścić selektora.
Twoja funkcja otrzymuje (options, context), ten sam context, który dostaje transformacja opcji.
registerSkipAddToCartRule
true, aby pozwolić konkretnemu formularzowi produktu dodawać do koszyka normalnie, całkowicie omijając Aftersell. To przydatne dla formularza, który potrzebuje własnego przekierowania lub obsługi.
true pomija, więc utrzymuj swoją regułę wąską — dopasowującą konkretne formularze, które należą do Ciebie — i zwracaj false dla wszystkiego innego. Reguły są oceniane w kolejności rejestracji i zatrzymują się na pierwszym true, więc nie umieszczaj w nich efektów ubocznych: to, czy Twoja w ogóle się uruchomi, zależy od tego, co zarejestrowało się przed nią.
Używaj do: formularza pre-orderu lub wyceny wymagającego własnego przekierowania, niestandardowego przepływu aplikacji subskrypcyjnej, przycisku „buy it now”, który powinien iść prosto do checkoutu. Aby zamiast tego wyłączyć przechwytywanie dla całej strony, użyj skip_add_to_cart_interceptor, ale preferuj ten hook, który jest ograniczony do wskazanych przez Ciebie formularzy.
Co dalej
- Obiekt koszyka: kształt pozycji, którą otrzymuje transformacja.
- Zdarzenia: wszystko, co możesz subskrybować.
- Akcje: odczytywanie i zmienianie koszyka.
- Przypadki użycia: kompletne rozwiązania typowych potrzeb.