Skip to main content
De winkelwagen weet wat de Ajax API van Shopify hem vertelt: titels, prijzen, aantallen, properties. Hij kent je metafields niet. Een cart enricher haalt extra product- of variantvelden op uit de Storefront API en koppelt ze aan elke overeenkomende regel, zodat je een leverindicatie, een “wordt apart verzonden”-waarschuwing, een ingrediëntenlijst of wat je ook maar op het product opslaat kunt tonen. Typische toepassingen: levervensters per product, allergenen- of ingrediëntenbadges, een aangepaste “bijna uitverkocht”-vlag, loyaliteitspuntenvermenigvuldigers, prijzen alleen voor abonnees.

De enricher registreren

Drie velden: Telkens wanneer de winkelwagen laadt of verandert, haalt Aftersell je fragment op voor elk product of elke variant in de winkelwagen. De fetch is non-blocking: de winkelwagen rendert onmiddellijk en zendt cart_updated opnieuw uit zodra de data binnenkomt. Een traag of falend fragment vertraagt of breekt de winkelwagen nooit.

De data lezen

Omdat enrichment asynchroon is, is line.metadata.delivery undefined totdat de eerste fetch resolvet. Bescherm de leesactie altijd met een guard.

Het in de winkelwagen renderen

Enrichment zet de data op de regel; een Custom code block in React-modus tekent het. Voeg het block toe als een Cart items sub-block zodat het één keer per regel rendert en die regel ontvangt als props.line:
Verrijkte waarden komen as-is en ongesanitized terug uit de Storefront API. Render ze als tekst, zoals hierboven, en nooit met dangerouslySetInnerHTML of door rauwe HTML te schrijven.

Data op variantniveau

Stel onType: 'ProductVariant' in wanneer het metafield op de variant staat in plaats van op het product:

Meer dan metafields

Het fragment wordt in een Storefront API-query gesplitst, dus alles wat de API op een Product of ProductVariant beschikbaar stelt werkt, niet alleen metafields:

Dingen om goed te doen

  • Bescherm elke leesactie. metadata is standaard {} en je namespace is undefined totdat de fetch resolvet. De winkelwagen rendert altijd voordat de data arriveert.
  • Elk id is zijn eigen namespace. Meerdere enrichers bestaan naast elkaar zonder te botsen, inclusief die door andere apps zijn geregistreerd.
  • Metafields moeten Storefront-zichtbaar zijn. Een metafield dat niet aan de Storefront API is blootgesteld, geeft null terug. Controleer de definitie in de Shopify admin als je niets terugkrijgt.
  • Houd het fragment klein. Het draait voor elk product in de winkelwagen, bij elke winkelwagenwijziging. Vraag om de velden die je gebruikt, niet om alles.
  • Registreer op set-up-tijd. Het is een hook, dus hij hoort bovenaan je Initialization-script.
  • Accolades moeten in balans zijn. Geen buitenste accolades rond het fragment, maar elke geneste selectie heeft zijn eigen bijpassende paar nodig. Een ongebalanceerd fragment wordt geweigerd.

Waar je verder kunt kijken