Skip to main content
Der Block Custom code fügt dein eigenes HTML oder React zum Warenkorb hinzu. Platziere ihn in einem beliebigen Bereich des Drawers oder verschachtele ihn als Sub-Block innerhalb von Cart items, sodass er für jede Position wiederholt wird. Anders als andere Blöcke hat er keine Content-Einstellungen und keinen Design-Bereich: Der Block ist der Code, du arbeitest also ausschließlich in seinem Code-Tab.
Animierte Vorschau, wie ein Custom-Code-Block im Aftersell Cart Editor hinzugefügt und aktiviert wird

Einen Custom-Code-Block hinzufügen und aktivieren

  1. Füge einen Custom code-Block zu einem beliebigen Bereich hinzu, oder als Sub-Block unter Cart items.
  2. Wähle ihn aus und öffne den Code-Tab.
  3. Wähle HTML oder React component. Neue Blöcke stehen standardmäßig auf HTML.
  4. Schreibe deinen Code.
  5. Wenn du React gewählt hast, klicke auf Compile.
  6. Aktiviere “Use custom template”. Bei diesem Block bedeutet dieser Schalter „meinen Custom Code anzeigen“, und er ist standardmäßig aus — es wird also nichts gerendert, bis du ihn aktivierst.
  7. Lass den Augen-Schalter in der Seitenleiste aktiviert, damit der Block für Käufer sichtbar bleibt.
Sowohl der Augen-Schalter als auch “Use custom template” müssen aktiviert sein, damit der Block erscheint.

Verhalten

  • Der Block rendert nichts, bis der Warenkorb geladen ist.
  • Er rendert außerdem nichts, wenn das Auge in der Seitenleiste ausgeschaltet ist, “Use custom template” deaktiviert ist, der Code leer ist oder React nicht kompiliert bzw. rendert. Da ein Fehler stillschweigend geschieht, prüfe deinen Block in der Vorschau, bevor du veröffentlichst.

HTML-Modus

Der HTML-Modus ersetzt eine kleine Menge an Tokens in deinem Markup. Er ist für statische oder token-basierte Inhalte gedacht, nicht für das Ausführen von Logik.
  • Inline-<script>-Tags werden nicht ausgeführt, und der HTML-Modus hat keinen Zugriff auf das SDK oder window.
  • Für Logik nutze den React-Modus oder Custom Scripts mit dem Cart SDK.

Tokens

Token-Werte sind formatierte Strings (Geldformat des Shops, ein Prozentsatz mit % oder eine Menge), fertig zum Einsetzen ins Markup:

Beispiel

React-Modus

Der React-Modus kompiliert eine Komponente und übergibt ihr Warenkorbdaten sowie eine add-to-cart-Aktion.
  • Der Editor fixiert den Wrapper auf function CustomCode(props: CustomCodeProps) { … }, und du bearbeitest nur den Rumpf zwischen diesen Zeilen.
  • Du musst auf Compile klicken und dann “Use custom template” aktivieren, bevor der Block angezeigt wird.
  • Deine Komponente kann useState, useEffect, useMemo, useRef und useCallback verwenden.
  • Anders als im HTML-Modus läuft React im Seitenkontext und kann daher window und das Cart SDK aufrufen, sofern verfügbar.
  • Wenn deine Komponente zur Laufzeit Fehler wirft, rendert der Block nichts, und der Rest des Warenkorbs funktioniert weiter.

Props

Summen und Ersparnisbeträge sind Ganzzahlen in der kleinsten Einheit der Währung (Cent bei USD), also ist $12.50 gleich 1250, nicht 12.50. Es sind keine formatierten Geld-Strings wie bei den HTML-Tokens.

Die Strukturen von cart und line

cart und line sind dieselben Objekte, die das SDK überall sonst bereitstellt, daher sind sie einmalig in der Cart-Objekt-Referenz dokumentiert: jedes Feld am Warenkorb, an einer Position und an einem Bundle. Die Felder, die du am häufigsten brauchen wirst: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice. Drei Besonderheiten dieses Blocks:
  • line ist nur bei einem Cart-items-Sub-Block gesetzt, wo deine Komponente einmal pro Position rendert. Als Bereich platziert ist line gleich null, und du liest stattdessen cart.items.
  • Bundle-Kinder sind nicht in cart.items. Wenn Positionen zu einem Bundle gruppiert sind, erscheint nur die Anker-Position; ihre Kinder liegen unter line.bundle.children.
  • Positionen, die durch eine Line-Transform ausgeblendet wurden, fehlen ebenfalls, obwohl sie weiterhin in cart.totalPrice einfließen.

Beispiele

Die Artikelanzahl anzeigen:
Als Cart-items-Sub-Block nutzt du props.line für produktbezogene Inhalte. Der Block rendert einmal pro Position, versehen mit dem Produkt und der Variante dieser Position:

Enrichment-Metadaten auslesen

Jedes Element in cart.items trägt ein Feld metadata: ein leeres Objekt {}, bis ein Cart Enricher es befüllt. Danach ist es nach der id des Enrichers indiziert und enthält die Storefront-Daten für das Produkt oder die Variante dieser Position:
metadata ist immer vorhanden und ist standardmäßig ein leeres Objekt {}, bis der asynchrone Fetch des Enrichers abgeschlossen ist (der Test auf „noch nicht angereichert“ ist Object.keys(item.metadata).length === 0). Verwende Optional Chaining (item.metadata?.enricherId), wenn du den Schlüssel eines bestimmten Enrichers liest, da dieser Schlüssel fehlt, bis die Anreicherung abgeschlossen ist.

Rabattcodes und Positionsrabatte auslesen

cart.discountCodes listet die auf den Warenkorb angewendeten Rabattcodes auf, und discountAllocations jeder Position listet die Rabatte auf, die auf genau diese Position angewendet wurden:

Platzierung und Limits

  • Bereich: beliebig (oben, Hauptbereich oder unten). Auch als Cart-items-Sub-Block verfügbar.
  • Maximum: unbegrenzt.
  • Zustand: gefüllter und leerer Warenkorb (als Bereichsblock). Als Cart-items-Sub-Block rendert er nur, wenn der Warenkorb Positionen enthält, eine Instanz pro Position.
  • Nicht gesperrt, du kannst ihn also entfernen oder ausblenden.
  • Es gibt keinen blockeigenen Design-Bereich. Style ihn über dein eigenes Markup, Custom CSS und deine globalen Design settings.

Wann Custom-Code-Block vs. Custom Template vs. Custom Script