Skip to main content
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.
Animowany podgląd dodawania i włączania bloku Custom code w edytorze Aftersell Cart

Dodaj i włącz blok Custom code

  1. Dodaj blok Custom code do dowolnej sekcji albo jako sub-blok pod Cart items.
  2. Zaznacz go i otwórz kartę Code.
  3. Wybierz HTML lub React component. Nowe bloki domyślnie używają HTML.
  4. Napisz swój kod.
  5. Jeśli wybierzesz React, kliknij Compile.
  6. 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.
  7. Zostaw włączony przełącznik oka w pasku bocznym, aby blok pozostał widoczny dla kupujących.
Zarówno przełącznik oka, jak i „Use custom template” muszą być włączone, aby blok się pojawił.

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

Tryb HTML podstawia mały zestaw tokenów do twojej struktury. Służy do treści statycznych lub opartych na tokenach, a nie do uruchamiania logiki.

Tokeny

Wartości tokenów to sformatowane ciągi znaków (format walutowy sklepu, procent ze znakiem % lub ilość), gotowe do wstawienia w strukturę:

Przykład

Tryb React

Tryb React kompiluje komponent i przekazuje mu dane koszyka oraz akcję 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, useRef i useCallback.
  • W odróżnieniu od trybu HTML, React działa w kontekście strony, więc może wywoływać window i 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

Sumy i kwoty oszczędności to liczby całkowite w jednostce podrzędnej waluty (centy dla USD), więc $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:
  • line jest ustawiony tylko na sub-bloku Cart items, gdzie twój komponent renderuje się raz per linia. Umieszczony jako sekcja, line jest null i zamiast tego czytasz cart.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ę w line.bundle.children.
  • Linii ukrytych przez transformację linii też tam nie ma, choć nadal liczą się do cart.totalPrice.

Przykłady

Pokaż liczbę pozycji:
Jako sub-blok Cart items użyj props.line do treści per produkt. Blok renderuje się raz per linia, oznaczony produktem i wariantem tej linii:

Odczytywanie metadanych wzbogacania

Każda pozycja w 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.

Kiedy użyć bloku custom code, szablonu niestandardowego, a kiedy skryptu niestandardowego