Como funciona
- Um bloco Custom code abaixo do botão de checkout renderiza a caixa de seleção.
- Enquanto a caixa está desmarcada, o bloco adiciona uma classe aos botões de checkout e de pagamento expresso do carrinho através do shadow root.
- O Custom CSS faz essa classe desativar os cliques.
Passo 1: adicione o bloco da caixa de seleção
props.cart importa: ela reaplica a classe depois que o carrinho re-renderiza, o que de outra forma a apagaria.
Passo 2: adicione o CSS
pointer-events: none é o que realmente bloqueia o clique; a opacidade só mostra ao comprador o porquê.
Passo 3: teste
- O botão de checkout fica esmaecido e não responde a cliques ao carregar.
- Marcar a caixa o habilita; desmarcá-la desativa o botão novamente.
- Os botões de pagamento expresso também estão bloqueados.
- Adicionar ou remover um item não reabilita o botão enquanto a caixa está desmarcada.
props.cart está no array de dependências.
Registrando quem aceitou
properties[...] direto do formulário, então o valor chega ao pedido seja quem for que realize a adição: Aftersell, o tema ou outro app.
Uma property com prefixo _ fica fora da linha visível ao comprador, mas ainda chega à Shopify, então aparece no pedido. Isso registra qual versão dos termos estava no ar, não que o comprador marcou a caixa.
Coisas para acertar
- Mire apenas em classes
cart-external-*. As gêmeascart-internal-*são o encanamento interno do carrinho, não um ponto de apoio para seu código. Veja Custom CSS. - Verifique se
shadowRootexiste antes de usá-lo. Ele éundefinedaté o carrinho inicializar. - O bloco não renderiza nada até o carrinho carregar, então o botão de checkout nunca fica ativo por um instante antes de o bloqueio ser aplicado.
- Um bloco React que lança um erro não renderiza nada e o resto do carrinho continua, o que aqui significa um botão de checkout sem proteção. Teste na pré-visualização antes de publicar.
Para onde ir a seguir
- Custom code blocks: o modo React e suas props.
- Custom CSS: a convenção de classes públicas.
- Events: o que o evento
checkoutpode e não pode fazer.