Skip to main content
O carrinho sabe o que a Ajax API da Shopify diz a ele: títulos, preços, quantidades, propriedades. Ele não conhece seus metafields. Um cart enricher busca campos extras de produto ou variante na Storefront API e os anexa a cada linha correspondente, para que você possa mostrar uma estimativa de entrega, um aviso de “enviado separadamente”, uma lista de ingredientes ou qualquer outra coisa que você armazene no produto. Usos típicos: janelas de entrega por produto, selos de alérgenos ou ingredientes, uma flag personalizada de “estoque baixo”, multiplicadores de pontos de fidelidade, preços exclusivos para assinantes.

Registrar o enricher

Três campos: Sempre que o carrinho carrega ou muda, a Aftersell busca seu fragment para cada produto ou variante no carrinho. A busca é não bloqueante: o carrinho renderiza imediatamente e reemite cart_updated quando os dados chegam. Um fragment lento ou com falha nunca atrasa nem quebra o carrinho.

Ler os dados

Como o enriquecimento é assíncrono, line.metadata.delivery é undefined até a primeira busca resolver. Sempre proteja a leitura.

Renderizar no carrinho

O enriquecimento coloca os dados na linha; um bloco Custom code em modo React os desenha. Adicione o bloco como um sub-bloco de Cart items para que ele renderize uma vez por linha e receba essa linha como props.line:
Os valores enriquecidos voltam da Storefront API como estão e sem sanitização. Renderize-os como texto, como acima, e nunca com dangerouslySetInnerHTML nem escrevendo HTML bruto.

Dados no nível da variante

Defina onType: 'ProductVariant' quando o metafield está na variante em vez de no produto:

Mais que metafields

O fragment é inserido em uma consulta da Storefront API, então qualquer coisa que a API expõe em um Product ou ProductVariant funciona, não só metafields:

Coisas para acertar

  • Proteja toda leitura. metadata tem {} como padrão e seu namespace é undefined até a busca resolver. O carrinho renderiza antes de os dados chegarem, sempre.
  • Cada id é seu próprio namespace. Vários enrichers coexistem sem colidir, incluindo os registrados por outros apps.
  • Os metafields devem estar visíveis para a Storefront. Um metafield que não está exposto à Storefront API retorna null. Verifique a definição no admin da Shopify se você não receber nada de volta.
  • Mantenha o fragment pequeno. Ele executa para cada produto no carrinho, em cada mudança do carrinho. Peça os campos que você usa, não tudo.
  • Registre no momento de configuração. É um hook, então pertence ao topo do seu script de Initialization.
  • As chaves devem estar balanceadas. Sem chaves externas ao redor do fragment, mas qualquer seleção aninhada precisa do seu próprio par correspondente. Um fragment desbalanceado é rejeitado.

Para onde ir a seguir