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.

Einen Custom-Code-Block hinzufügen und aktivieren
- Füge einen Custom code-Block zu einem beliebigen Bereich hinzu, oder als Sub-Block unter Cart items.
- Wähle ihn aus und öffne den Code-Tab.
- Wähle HTML oder React component. Neue Blöcke stehen standardmäßig auf HTML.
- Schreibe deinen Code.
- Wenn du React gewählt hast, klicke auf Compile.
- 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.
- Lass den Augen-Schalter in der Seitenleiste aktiviert, damit der Block für Käufer sichtbar bleibt.
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
- Inline-
<script>-Tags werden nicht ausgeführt, und der HTML-Modus hat keinen Zugriff auf das SDK oderwindow. - Für Logik nutze den React-Modus oder Custom Scripts mit dem Cart SDK.
Tokens
% oder eine Menge), fertig zum Einsetzen ins Markup:
Beispiel
React-Modus
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,useRefunduseCallbackverwenden. - Anders als im HTML-Modus läuft React im Seitenkontext und kann daher
windowund 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
$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:
lineist nur bei einem Cart-items-Sub-Block gesetzt, wo deine Komponente einmal pro Position rendert. Als Bereich platziert istlinegleichnull, und du liest stattdessencart.items.- Bundle-Kinder sind nicht in
cart.items. Wenn Positionen zu einem Bundle gruppiert sind, erscheint nur die Anker-Position; ihre Kinder liegen unterline.bundle.children. - Positionen, die durch eine Line-Transform ausgeblendet wurden, fehlen ebenfalls, obwohl sie weiterhin in
cart.totalPriceeinfließen.
Beispiele
props.line für produktbezogene Inhalte. Der Block rendert einmal pro Position, versehen mit dem Produkt und der Variante dieser Position:
Enrichment-Metadaten auslesen
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.