window.aftersell.cart.hooks.
Et hook ændrer, hvad kunden ser; en action ændrer, hvad der er i deres kurv. At skjule en gratis gave-linje med en transform lader den blive i kurven og i totalen. At fjerne den med
removeItem tager den ud for alvor.Hooks er opsætningskald, så de er sikre at registrere helt øverst i dit script uden behov for at vente på
ready(). Registrér dem i din kurvs Initialization-script (se Brugerdefinerede scripts).Sådan fungerer registrering
register*-metode. Du kalder den med din funktion; den returnerer en afregistreringsfunktion, du kan kalde for at fjerne din.
Et hook, der kaster en fejl, eller som ikke er en funktion, springes over; resten kører stadig, og kurven fortsætter. Én defekt integration kan ikke tage add to cart, abonnementsvælgeren eller sorteringen ned.
Bagsiden er, at et defekt hook fra dig fejler lydløst: intet når browserkonsollen. Se Fejlfinding for, hvor de fejl kommer til syne.
registerLineTransform
registerLineTransform(fn) kører for hver kurvlinje, før den renderes. Brug det til at skjule en linje eller ændre, hvordan den fremstår, uden at røre, hvad der faktisk er i kundens kurv.
Funktionen modtager en skrivebeskyttet linje plus settere. Den returnerer en afregistreringsfunktion.
setInternalProperties er setteren bag bundle-gruppering: at stemple de kanoniske bundle-properties på hver linje er måden, du får en tredjepartsapps separate kurvlinjer til at rendere som én vare. Se Gruppér bundle-linjer fra en anden app.
registerLineComparator
Array.prototype.sort forventer. Den kører efter skjul og omdøbning, så den ser de transformerede linjer.
0 for par, du ikke har en mening om. Det er det, der overlader beslutningen til den næste comparator i stedet for at påtvinge den en rækkefølge.
Brug det til: at flyde abonnementer eller varer af høj værdi til toppen, synke gratis gaver og tilkøb til bunden, holde et sponsoreret produkt først.
registerCartEnricher
registerCartEnricher(registration) henter ekstra produkt- eller variantdata fra Shopify Storefront API’et og tilknytter dem til hver matchende kurvlinje på line.metadata[id]. Brug det til at vise metafields, tags eller alt andet, Storefront API’et eksponerer, uden at der kræves kodeændringer fra Aftersell.
Returnerer en afregistreringsfunktion.
Hver gang kurven indlæses eller ændres, henter Aftersell dit fragment for hvert produkt eller hver variant i kurven og tilknytter resultatet. Hentningen er ikke-blokerende: kurven renderes straks og genudsender
cart_updated, når dataene lander. Et langsomt eller fejlende fragment forsinker eller ødelægger aldrig kurven.
line.metadata.pricing er undefined, indtil den første hentning resolver, og metadata selv som standard er {}.
Brug det til: at trække et metafield på hver linje (et leveringsestimat, en ingrediensliste, et “sendes separat”-flag, en loyalitetsmultiplikator) og rendere det via en Custom code-blok. Se visning af metafield-data på kurvlinjer.
Flere enrichers sameksisterer gnidningsfrit, da hvert
id er sit eget namespace, så deres data kolliderer aldrig.registerSubscriptionOptionsTransform
options.filter(...) og lydløst slette alle andre apps’ planer på vejen ud. Med settere kan du kun beskrive dine egne redigeringer: patches flettes pr. plan og pr. felt, og den sidste skriver vinder en reel konflikt på samme felt af samme plan. En transform, der kaster en fejl, bidrager med intet, og de andre gælder stadig.
Hver transform ser de oprindelige muligheder, ikke et halvt-patchet billede, så registreringsrækkefølgen ændrer ikke, hvad du læser.
Planrækkefølgen forbliver, som Shopify returnerede den, så en transform kan ikke omarrangere. For at styre, hvilken plan der tilbydes først (og hvilken engangs-opgraderingsknappen abonnerer på), skal du bruge
registerDefaultSubscriptionOptionSelector, som rykker sit valg frem forrest.discountPercent har ingen setter, fordi en plan, Shopify ikke vil honorere ved checkout, blot ville være et brudt løfte i vælgeren.
registerDefaultSubscriptionOptionSelector
id, eller null for at give afkald.
null for de linjer, du ikke bekymrer dig om, i stedet for at gætte. Det overlader beslutningen til den næste selector i stedet for at tilsidesætte den. Et id, der ikke matcher nogen plan på linjen, behandles på samme måde som null og giver også afkald, så et forældet id ikke kan tømme vælgeren.
Din funktion modtager (options, context), den samme context, som options-transformen får.
registerSkipAddToCartRule
true for at lade en specifik produktformular tilføje til kurven normalt og omgå Aftersell helt. Det er nyttigt for en formular, der har brug for sin egen redirect eller håndtering.
true springer over, så hold din regel snæver, så den matcher de specifikke formularer, du ejer, og returnér false for alt andet. Regler evalueres i registreringsrækkefølge og stopper ved det første true, så læg ikke bivirkninger i en: om din overhovedet kører, afhænger af, hvad der blev registreret før den.
Brug det til: en forudbestillings- eller tilbudsformular, der har brug for sin egen redirect, en abonnementsapps brugerdefinerede flow, en “buy it now”-knap, der skal gå direkte til checkout. For i stedet at slå interception fra for hele siden skal du bruge skip_add_to_cart_interceptor, men foretræk dette hook, som er afgrænset til de formularer, du navngiver.
Hvor skal du hen nu
- Cart-objekt: formen på den linje, en transform modtager.
- Events: alt hvad du kan abonnere på.
- Actions: læsning og ændring af kurven.
- Use cases: komplette løsninger på almindelige ønsker.