O bloco Custom code adiciona seu próprio HTML ou React ao carrinho. Coloque-o em qualquer seção do drawer, ou aninhe-o dentro de Cart items como um sub-bloco para que ele se repita em cada linha. Diferente de outros blocos, ele não tem configurações de Content nem seção de Design: o bloco é o código, então você trabalha inteiramente na aba Code dele.

Adicionar e ativar um bloco Custom code
- Adicione um bloco Custom code a qualquer seção, ou como sub-bloco sob Cart items.
- Selecione-o e abra a aba Code.
- Escolha HTML ou React component. Blocos novos vêm por padrão em HTML.
- Escreva seu código.
- Se você escolheu React, clique em Compile.
- Ative “Use custom template”. Para este bloco, esse botão significa “mostrar meu código personalizado”, e ele vem desativado por padrão, então nada é renderizado até que você o ative.
- Mantenha o botão de olho da barra lateral ativado para que o bloco permaneça visível aos compradores.
Comportamento
- O bloco não renderiza nada até o carrinho ter carregado.
- Ele também não renderiza nada quando o olho da barra lateral está desativado, “Use custom template” está desativado, o código está vazio, ou o React falha ao compilar ou renderizar. Como uma falha é silenciosa, verifique seu bloco na pré-visualização antes de publicar.
Modo HTML
- Tags
<script>inline não executam, e o modo HTML não tem acesso ao SDK nem awindow. - Para lógica, use o modo React ou Scripts personalizados com o Cart SDK.
Tokens
% ou uma quantidade), prontas para inserir na marcação:
Exemplo
Modo React
add-to-cart.
- O editor trava o wrapper em
function CustomCode(props: CustomCodeProps) { … }, e você edita apenas o corpo entre essas linhas. - Você precisa clicar em Compile e depois ativar “Use custom template”, antes que o bloco apareça.
- Seu componente pode usar
useState,useEffect,useMemo,useRefeuseCallback. - Diferente do modo HTML, o React roda no contexto da página, então pode chamar
windowe o Cart SDK quando estão disponíveis. - Se o seu componente lançar erros em tempo de execução, o bloco não renderiza nada e o resto do carrinho continua funcionando.
Props
$12.50 é 1250, não 12.50. Eles não são strings de dinheiro formatadas como os tokens HTML.
As estruturas de cart e line
cart e line são os mesmos objetos que o SDK expõe em todos os outros lugares, então são documentados uma única vez na referência do objeto de carrinho: cada campo do carrinho, de uma linha e de um bundle.
Os que você vai usar com mais frequência: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice.
Três coisas específicas deste bloco:
linesó é definida em um sub-bloco de Cart items, onde seu componente é renderizado uma vez por linha. Colocado como seção,lineénulle você lêcart.itemsem vez disso.- Filhos de bundle não estão em
cart.items. Quando as linhas são agrupadas em um bundle, apenas a linha âncora aparece; seus filhos ficam emline.bundle.children. - Linhas ocultadas por um line transform também não estão lá, embora ainda contem para
cart.totalPrice.
Exemplos
props.line para conteúdo por produto. O bloco é renderizado uma vez por linha, marcado com o produto e a variante daquela linha:
Lendo metadados de enriquecimento
cart.items carrega um campo metadata: um objeto vazio {} até que um cart enricher o preencha. Uma vez preenchido, ele é indexado pelo id do enricher e contém os dados da Storefront para o produto ou variante daquela linha:
metadata está sempre presente e tem como padrão um objeto vazio {} até que a busca assíncrona do enricher seja concluída (o teste de “ainda não enriquecido” é Object.keys(item.metadata).length === 0). Use encadeamento opcional (item.metadata?.enricherId) ao ler a chave de um enricher específico, já que essa chave está ausente até o enriquecimento chegar.
Lendo códigos de desconto e descontos de linha
cart.discountCodes lista os códigos de desconto aplicados ao carrinho, e o discountAllocations de cada linha lista os descontos aplicados àquela linha específica:
Posicionamento e limites
- Região: qualquer uma (topo, corpo ou parte inferior). Também disponível como sub-bloco de Cart items.
- Máximo: ilimitado.
- Estado: carrinho cheio e vazio (como bloco de seção). Como sub-bloco de Cart items, só é renderizado quando o carrinho tem linhas, uma instância por linha.
- Não é bloqueado, então você pode removê-lo ou ocultá-lo.
- Não há seção de Design por bloco. Estilize por meio da sua própria marcação, do CSS personalizado e das suas Configurações de design globais.