Skip to main content
Kurven ved, hvad Shopifys Ajax API fortæller den: titler, priser, antal, properties. Den kender ikke dine metafields. En cart enricher henter ekstra produkt- eller variantfelter fra Storefront API’et og vedhæfter dem til hver matchende linje, så du kan vise et leveringsestimat, en “sendes separat”-advarsel, en ingrediensliste eller alt andet, du gemmer på produktet. Typiske anvendelser: leveringsvinduer pr. produkt, allergen- eller ingrediensbadges, et custom “lav lagerbeholdning”-flag, multiplikatorer for loyalitetspoint, priser kun for abonnenter.

Registrér enricheren

Tre felter: Hver gang kurven indlæses eller ændres, henter Aftersell dit fragment for hvert produkt eller variant i kurven. Hentningen er ikke-blokerende: kurven renderes med det samme og gen-udsender cart_updated, når dataene lander. Et langsomt eller fejlende fragment forsinker eller ødelægger aldrig kurven.

Læs dataene

Fordi berigelse er asynkron, er line.metadata.delivery undefined, indtil den første hentning resolves. Beskyt altid læsningen.

Render det i kurven

Berigelse lægger dataene på linjen; en Custom code-blok i React-tilstand tegner det. Tilføj blokken som en Cart items-underblok, så den renderes én gang pr. linje og modtager den linje som props.line:
Berigede værdier kommer tilbage fra Storefront API’et som de er og usaniterede. Render dem som tekst, som ovenfor, og aldrig med dangerouslySetInnerHTML eller ved at skrive rå HTML.

Data på variantniveau

Sæt onType: 'ProductVariant', når metafieldet ligger på varianten frem for produktet:

Mere end metafields

Fragmentet splejses ind i en Storefront API-forespørgsel, så alt, API’et eksponerer på et Product eller ProductVariant, virker, ikke kun metafields:

Ting du skal have styr på

  • Beskyt hver læsning. metadata er som standard {}, og dit namespace er undefined, indtil hentningen resolves. Kurven renderes, før dataene ankommer, altid.
  • Hvert id er sit eget namespace. Flere enrichers sameksisterer uden at kollidere, inklusive dem registreret af andre apps.
  • Metafields skal være Storefront-synlige. Et metafield, der ikke er eksponeret for Storefront API’et, returnerer null. Tjek definitionen i Shopify admin, hvis du intet får tilbage.
  • Hold fragmentet lille. Det kører for hvert produkt i kurven, ved hver kurvændring. Bed om de felter, du bruger, ikke alt.
  • Registrér på opsætningstidspunktet. Det er en hook, så den hører hjemme øverst i dit Initialization-script.
  • Klammer skal balancere. Ingen ydre klammer omkring fragmentet, men enhver indlejret udvælgelse skal have sit eget matchende par. Et ubalanceret fragment afvises.

Hvor du kan gå hen herfra