Skip to main content
Il blocco Custom code aggiunge il tuo HTML o React al carrello. Mettilo in qualsiasi sezione del drawer, oppure annidalo dentro Cart items come sotto-blocco così si ripete per ogni riga. A differenza degli altri blocchi, non ha impostazioni Content né una sezione Design: il blocco è il codice, quindi lavori interamente nella sua scheda Code.
Anteprima animata dell'aggiunta e dell'attivazione di un blocco Custom code nell'editor di Aftersell Cart

Aggiungere e attivare un blocco Custom code

  1. Aggiungi un blocco Custom code a qualsiasi sezione, o come sotto-blocco sotto Cart items.
  2. Selezionalo e apri la scheda Code.
  3. Scegli HTML o React component. I nuovi blocchi hanno HTML come predefinito.
  4. Scrivi il tuo codice.
  5. Se hai scelto React, fai clic su Compile.
  6. Attiva “Use custom template”. Per questo blocco, quell’interruttore significa “mostra il mio codice personalizzato”, ed è disattivo per impostazione predefinita, quindi non viene renderizzato nulla finché non lo abiliti.
  7. Mantieni attivo l’interruttore a occhio nella barra laterale così il blocco resta visibile agli acquirenti.
Sia l’interruttore a occhio sia “Use custom template” devono essere attivi perché il blocco appaia.

Comportamento

  • Il blocco non renderizza nulla finché il carrello non è stato caricato.
  • Non renderizza nulla nemmeno quando l’occhio della barra laterale è disattivo, “Use custom template” è disattivo, il codice è vuoto, oppure React non riesce a compilare o renderizzare. Poiché un errore è silenzioso, controlla il tuo blocco in anteprima prima di pubblicare.

Modalità HTML

La modalità HTML sostituisce un piccolo set di token nel tuo markup. Serve per contenuti statici o basati su token, non per eseguire logica.

Token

I valori dei token sono stringhe formattate (formato valuta del negozio, una percentuale con %, o una quantità), pronte da inserire nel markup:

Esempio

Modalità React

La modalità React compila un componente e gli passa i dati del carrello più un’azione add-to-cart.
  • L’editor blocca il wrapper su function CustomCode(props: CustomCodeProps) { … }, e tu modifichi solo il corpo tra quelle righe.
  • Devi fare clic su Compile e poi attivare “Use custom template”, prima che il blocco appaia.
  • Il tuo componente può usare useState, useEffect, useMemo, useRef e useCallback.
  • A differenza della modalità HTML, React viene eseguito nel contesto della pagina, quindi può chiamare window e il Cart SDK quando disponibili.
  • Se il tuo componente genera errori a runtime, il blocco non renderizza nulla e il resto del carrello continua a funzionare.

Prop

I totali e gli importi di risparmio sono numeri interi nell’unità minore della valuta (centesimi per USD), quindi $12.50 è 1250, non 12.50. Non sono stringhe di denaro formattate come i token HTML.

Le strutture di cart e line

cart e line sono gli stessi oggetti che l’SDK espone ovunque, quindi sono documentati una sola volta nel riferimento dell’oggetto carrello: ogni campo del carrello, di una riga e di un bundle. Quelli che userai di più: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice. Tre cose specifiche di questo blocco:
  • line è impostata solo su un sotto-blocco di Cart items, dove il tuo componente viene renderizzato una volta per riga. Posizionato come sezione, line è null e leggi invece cart.items.
  • I figli dei bundle non sono in cart.items. Quando le righe sono raggruppate in un bundle, appare solo la riga anchor; i suoi figli si trovano in line.bundle.children.
  • Nemmeno le righe nascoste da un line transform sono presenti, anche se contano comunque nel cart.totalPrice.

Esempi

Mostrare il conteggio degli articoli:
Come sotto-blocco di Cart items, usa props.line per contenuti per prodotto. Il blocco viene renderizzato una volta per riga, contrassegnato con il prodotto e la variante di quella riga:

Leggere i metadata di arricchimento

Ogni articolo in cart.items contiene un campo metadata: un oggetto vuoto {} finché un cart enricher non lo popola. Una volta popolato, è indicizzato per l’id dell’enricher e contiene i dati Storefront per il prodotto o la variante di quella riga:
metadata è sempre presente e per impostazione predefinita è un oggetto vuoto {} finché il fetch asincrono dell’enricher non è completato (il test “non ancora arricchito” è Object.keys(item.metadata).length === 0). Usa l’optional chaining (item.metadata?.enricherId) quando leggi la chiave di un enricher specifico, dato che quella chiave è assente finché l’arricchimento non arriva.

Leggere i codici sconto e gli sconti per riga

cart.discountCodes elenca i codici sconto applicati al carrello, e le discountAllocations di ogni riga elencano gli sconti applicati a quella specifica riga:

Posizionamento e limiti

  • Regione: qualsiasi (superiore, corpo o inferiore). Disponibile anche come sotto-blocco di Cart items.
  • Massimo: illimitato.
  • Stato: carrello pieno e vuoto (come blocco di sezione). Come sotto-blocco di Cart items, viene renderizzato solo quando il carrello ha righe, un’istanza per riga.
  • Non è bloccato, quindi puoi rimuoverlo o nasconderlo.
  • Non c’è una sezione Design per blocco. Personalizza lo stile attraverso il tuo markup, il CSS personalizzato e le tue impostazioni di design globali.

Quando usare il blocco custom code vs. template personalizzato vs. script personalizzato