Blok Custom code dodaje twój własny HTML lub React do koszyka. Umieść go w dowolnej sekcji szuflady albo zagnieźdź wewnątrz Cart items jako sub-blok, aby powtarzał się dla każdej linii. W odróżnieniu od innych bloków nie ma ustawień Content ani sekcji Design: blok jest kodem, więc pracujesz wyłącznie w jego karcie Code.

Dodaj i włącz blok Custom code
- Dodaj blok Custom code do dowolnej sekcji albo jako sub-blok pod Cart items.
- Zaznacz go i otwórz kartę Code.
- Wybierz HTML lub React component. Nowe bloki domyślnie używają HTML.
- Napisz swój kod.
- Jeśli wybierzesz React, kliknij Compile.
- Włącz „Use custom template”. Dla tego bloku ten przełącznik oznacza „pokaż mój niestandardowy kod” i domyślnie jest wyłączony, więc nic się nie renderuje, dopóki go nie włączysz.
- Zostaw włączony przełącznik oka w pasku bocznym, aby blok pozostał widoczny dla kupujących.
Działanie
- Blok nie renderuje niczego, dopóki koszyk się nie załaduje.
- Nie renderuje też niczego, gdy oko w pasku bocznym jest wyłączone, „Use custom template” jest wyłączone, kod jest pusty albo React nie skompiluje się lub nie wyrenderuje. Ponieważ awaria jest cicha, sprawdź swój blok w podglądzie przed publikacją.
Tryb HTML
- Wbudowane tagi
<script>nie działają, a tryb HTML nie ma dostępu do SDK aniwindow. - Dla logiki użyj trybu React lub Niestandardowych skryptów z Cart SDK.
Tokeny
% lub ilość), gotowe do wstawienia w strukturę:
Przykład
Tryb React
add-to-cart.
- Edytor blokuje wrapper na
function CustomCode(props: CustomCodeProps) { … }, a ty edytujesz tylko treść między tymi liniami. - Musisz kliknąć Compile, a następnie włączyć „Use custom template”, zanim blok się pokaże.
- Twój komponent może używać
useState,useEffect,useMemo,useRefiuseCallback. - W odróżnieniu od trybu HTML, React działa w kontekście strony, więc może wywoływać
windowi Cart SDK, gdy są dostępne. - Jeśli twój komponent rzuca błędy w czasie działania, blok nie renderuje niczego, a reszta koszyka działa dalej.
Propsy
$12.50 to 1250, nie 12.50. Nie są to sformatowane ciągi walutowe jak tokeny HTML.
Struktury cart i line
cart i line to te same obiekty, które SDK udostępnia wszędzie indziej, więc są udokumentowane raz w dokumentacji obiektu koszyka: każde pole koszyka, linii i pakietu.
Te, po które będziesz sięgać najczęściej: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice.
Trzy rzeczy specyficzne dla tego bloku:
linejest ustawiony tylko na sub-bloku Cart items, gdzie twój komponent renderuje się raz per linia. Umieszczony jako sekcja,linejestnulli zamiast tego czytaszcart.items.- Elementy podrzędne pakietu nie są w
cart.items. Gdy linie są zgrupowane w pakiet, pojawia się tylko linia kotwicy; jej elementy podrzędne znajdują się wline.bundle.children. - Linii ukrytych przez transformację linii też tam nie ma, choć nadal liczą się do
cart.totalPrice.
Przykłady
props.line do treści per produkt. Blok renderuje się raz per linia, oznaczony produktem i wariantem tej linii:
Odczytywanie metadanych wzbogacania
cart.items ma pole metadata: pusty obiekt {}, dopóki cart enricher go nie wypełni. Po wypełnieniu jest kluczowane po id enrichera i zawiera dane Storefront dla produktu lub wariantu tej linii:
metadata jest zawsze obecne i domyślnie jest pustym obiektem {}, dopóki asynchroniczne pobieranie enrichera się nie zakończy (test „jeszcze niewzbogacone” to Object.keys(item.metadata).length === 0). Używaj opcjonalnego łańcuchowania (item.metadata?.enricherId) przy odczycie klucza konkretnego enrichera, ponieważ ten klucz nie istnieje, dopóki wzbogacanie nie zostanie zakończone.
Odczytywanie kodów rabatowych i rabatów linii
cart.discountCodes wymienia kody rabatowe zastosowane do koszyka, a discountAllocations każdej linii wymienia rabaty zastosowane do tej konkretnej linii:
Umiejscowienie i limity
- Region: dowolny (góra, treść lub dół). Dostępny także jako sub-blok Cart items.
- Maksimum: bez limitu.
- Stan: wypełniony i pusty koszyk (jako blok sekcji). Jako sub-blok Cart items renderuje się tylko wtedy, gdy koszyk ma linie — jedna instancja per linia.
- Nie jest zablokowany, więc możesz go usunąć lub ukryć.
- Nie ma sekcji Design per blok. Stylizuj przez własną strukturę, Custom CSS i globalne Ustawienia designu.