Skip to main content
Der Warenkorb weiß, was Shopifys Ajax API ihm mitteilt: Titel, Preise, Mengen, Eigenschaften. Deine Metafields kennt er nicht. Ein Cart Enricher ruft zusätzliche Produkt- oder Variantenfelder aus der Storefront API ab und hängt sie an jede passende Zeile an, damit du eine Lieferzeitschätzung, einen Hinweis „wird separat versendet“, eine Zutatenliste oder alles andere anzeigen kannst, was du am Produkt speicherst. Typische Einsatzzwecke: produktspezifische Lieferfenster, Allergen- oder Zutaten-Badges, ein eigenes „Geringer Bestand“-Kennzeichen, Multiplikatoren für Treuepunkte, Preise nur für Abonnenten.

Registriere den Enricher

Drei Felder: Immer wenn der Warenkorb lädt oder sich ändert, ruft Aftersell dein Fragment für jedes Produkt bzw. jede Variante im Warenkorb ab. Der Abruf ist nicht blockierend: Der Warenkorb rendert sofort und sendet cart_updated erneut, sobald die Daten eintreffen. Ein langsames oder fehlschlagendes Fragment verzögert oder beschädigt den Warenkorb nie.

Lies die Daten

Da die Anreicherung asynchron erfolgt, ist line.metadata.delivery so lange undefined, bis der erste Abruf abgeschlossen ist. Sichere den Lesezugriff immer ab.

Rendere sie im Warenkorb

Die Anreicherung legt die Daten auf die Zeile; ein Custom-Code-Block im React-Modus zeichnet sie. Füge den Block als Sub-Block von Cart items hinzu, damit er einmal pro Zeile rendert und diese Zeile als props.line erhält:
Angereicherte Werte kommen unverändert und unbereinigt von der Storefront API zurück. Rendere sie wie oben als Text und niemals mit dangerouslySetInnerHTML oder durch das Schreiben von rohem HTML.

Daten auf Variantenebene

Setze onType: 'ProductVariant', wenn das Metafield an der Variante statt am Produkt hängt:

Mehr als Metafields

Das Fragment wird in eine Storefront-API-Abfrage eingefügt, daher funktioniert alles, was die API auf einem Product oder ProductVariant bereitstellt, nicht nur Metafields:

Worauf du achten solltest

  • Sichere jeden Lesezugriff ab. metadata ist standardmäßig {}, und dein Namespace ist undefined, bis der Abruf abgeschlossen ist. Der Warenkorb rendert immer, bevor die Daten eintreffen.
  • Jede id ist ihr eigener Namespace. Mehrere Enricher koexistieren ohne Kollisionen, auch solche, die von anderen Apps registriert wurden.
  • Metafields müssen für die Storefront sichtbar sein. Ein Metafield, das nicht für die Storefront API freigegeben ist, gibt null zurück. Prüfe die Definition im Shopify-Adminbereich, wenn du nichts zurückbekommst.
  • Halte das Fragment klein. Es läuft für jedes Produkt im Warenkorb, bei jeder Warenkorbänderung. Frage die Felder ab, die du verwendest, nicht alles.
  • Registriere zur Einrichtungszeit. Es ist ein Hook, er gehört also an den Anfang deines Initialisierungsskripts.
  • Klammern müssen ausgeglichen sein. Keine äußeren geschweiften Klammern um das Fragment, aber jede verschachtelte Auswahl braucht ihr eigenes passendes Paar. Ein unausgeglichenes Fragment wird abgelehnt.

Nächste Schritte