window.aftersell.cart.hooks.
Een hook verandert wat de shopper ziet; een action verandert wat er in de winkelwagen zit. Een gratis-geschenkregel verbergen met een transform laat hem in de winkelwagen en in het totaal. Hem verwijderen met
removeItem haalt hem er echt uit.Hooks zijn set-up-aanroepen, dus veilig om helemaal bovenaan je script te registreren, zonder te hoeven wachten op
ready(). Registreer ze in het Initialization-script van je winkelwagen (zie Aangepaste scripts).Hoe registratie werkt
register*-methode. Je roept hem aan met je functie; hij geeft een deregistratiefunctie terug die je kunt aanroepen om de jouwe te verwijderen.
Een hook die een fout gooit, of die geen functie is, wordt overgeslagen; de rest draait gewoon, en de winkelwagen gaat door. Eén kapotte integratie kan add-to-cart, de abonnementskiezer of de sortering niet platleggen.
De keerzijde is dat een kapotte hook van jou stilzwijgend faalt: er bereikt niets de browserconsole. Zie Debuggen voor waar die fouten wel opduiken.
registerLineTransform
registerLineTransform(fn) draait voor elke winkelwagenregel voordat die rendert. Gebruik het om een regel te verbergen of te veranderen hoe hij leest, zonder aan te raken wat er daadwerkelijk in de winkelwagen van de shopper zit.
De functie ontvangt een alleen-lezen regel plus setters. Hij geeft een deregistratiefunctie terug.
setInternalProperties is de setter achter bundelgroepering: door de canonieke bundelproperties op elke regel te stempelen laat je de losse winkelwagenregels van een externe app als één artikel renderen. Zie Bundelregels van een andere app groeperen.
registerLineComparator
Array.prototype.sort verwacht. Hij draait na verbergen en hernoemen, dus hij ziet de getransformeerde regels.
0 terug voor paren waar je geen mening over hebt. Dat geeft de beslissing door aan de volgende comparator in plaats van er een volgorde aan op te leggen.
Gebruik het voor: abonnementen of artikelen met hoge waarde naar boven laten drijven, gratis geschenken en add-ons naar beneden laten zakken, een gesponsord product bovenaan houden.
registerCartEnricher
registerCartEnricher(registration) haalt extra product- of variantdata op uit de Shopify Storefront API en koppelt die aan elke bijpassende winkelwagenregel op line.metadata[id]. Gebruik het om metafields, tags of wat de Storefront API verder ook blootlegt naar boven te halen, zonder dat er een codewijziging van Aftersell nodig is.
Geeft een deregistratiefunctie terug.
Telkens wanneer de winkelwagen laadt of verandert, haalt Aftersell je fragment op voor elk product of elke variant in de winkelwagen en koppelt het resultaat. De fetch is niet-blokkerend: de winkelwagen rendert direct en stuurt
cart_updated opnieuw uit zodra de data landt. Een traag of falend fragment vertraagt of breekt de winkelwagen nooit.
line.metadata.pricing undefined is totdat de eerste fetch resolvet, en metadata zelf standaard {} is.
Gebruik het voor: een metafield op elke regel binnenhalen (een leveringsschatting, een ingrediëntenlijst, een “wordt apart verzonden”-vlag, een loyaliteitsvermenigvuldiger) en dat renderen via een Custom code-blok. Zie metafield-data tonen op winkelwagenregels.
Meerdere enrichers bestaan probleemloos naast elkaar, aangezien elke
id zijn eigen namespace is en hun data dus nooit botst.registerSubscriptionOptionsTransform
options.filter(...) schrijven en onderweg stilzwijgend de plannen van elke andere app verwijderen. Met setters kun je alleen je eigen bewerkingen beschrijven: patches worden samengevoegd per plan en per veld, en de laatste schrijver wint een echt conflict op hetzelfde veld van hetzelfde plan. Een transform die een fout gooit draagt niets bij, en de andere worden nog steeds toegepast.
Elke transform ziet de originele opties, geen half-gepatcht beeld, dus registratievolgorde verandert niet wat je leest.
De planvolgorde blijft zoals Shopify hem teruggaf, dus een transform kan niet herordenen. Om te bepalen welk plan als eerste wordt aangeboden (en waarop de eenmalige-upgradeknop abonneert), gebruik je
registerDefaultSubscriptionOptionSelector, die zijn keuze naar voren promoveert.discountPercent heeft geen setter, omdat een plan dat Shopify bij de checkout niet honoreert gewoon een gebroken belofte in de kiezer zou zijn.
registerDefaultSubscriptionOptionSelector
id terug, of null om te passen.
null terug voor de regels waar je niet om geeft in plaats van te gokken. Dat geeft de beslissing door aan de volgende selector in plaats van hem te overschrijven. Een id die met geen enkel plan op de regel overeenkomt wordt hetzelfde behandeld als null en geeft ook door, dus een verouderde id kan de kiezer niet blank maken.
Je functie ontvangt (options, context), dezelfde context die de options-transform krijgt.
registerSkipAddToCartRule
true terug om een specifiek productformulier normaal aan de winkelwagen te laten toevoegen en Aftersell volledig te omzeilen. Dit is handig voor een formulier dat zijn eigen redirect of afhandeling nodig heeft.
true slaat over, dus houd je regel smal, gericht op de specifieke formulieren die je zelf beheert, en geef false terug voor al het andere. Regels worden geëvalueerd in registratievolgorde en stoppen bij de eerste true, dus stop er geen bijeffecten in: of de jouwe überhaupt draait, hangt af van wat er vóór hem is geregistreerd.
Gebruik het voor: een pre-order- of offerteformulier dat zijn eigen redirect nodig heeft, de aangepaste flow van een abonnementsapp, een “buy it now”-knop die rechtstreeks naar de checkout moet gaan. Om interceptie voor de hele pagina uit te schakelen, gebruik je in plaats daarvan skip_add_to_cart_interceptor, maar geef de voorkeur aan deze hook, die beperkt is tot de formulieren die je benoemt.
Waar nu naartoe
- Cart-object: de vorm van de regel die een transform ontvangt.
- Events: alles waarop je je kunt abonneren.
- Actions: de winkelwagen lezen en wijzigen.
- Use cases: complete oplossingen voor veelvoorkomende verzoeken.