Come funziona
- Un blocco Custom code sotto il pulsante di checkout renderizza la casella.
- Finché la casella non è spuntata, il blocco aggiunge una classe ai pulsanti di checkout e di pagamento rapido del carrello tramite lo shadow root.
- Il CSS personalizzato fa sì che quella classe disabiliti i clic.
Passo 1: Aggiungi il blocco con la casella
props.cart è importante: riapplica la classe dopo che il carrello si è re-renderizzato, cosa che altrimenti la cancellerebbe.
Passo 2: Aggiungi il CSS
pointer-events: none è ciò che blocca davvero il clic; l’opacità mostra semplicemente all’acquirente il perché.
Passo 3: Testalo
- Il pulsante di checkout è attenuato e non risponde ai clic al caricamento.
- Spuntare la casella lo abilita; deselezionarla disabilita di nuovo il pulsante.
- Anche i pulsanti di pagamento rapido sono bloccati.
- Aggiungere o rimuovere un articolo non riabilita il pulsante mentre la casella non è spuntata.
props.cart sia nell’array delle dipendenze.
Tracciare chi ha accettato
properties[...] direttamente dal form, quindi il valore raggiunge l’ordine indipendentemente da chi esegue l’aggiunta: Aftersell, il tema o un’altra app.
Una proprietà con prefisso _ resta fuori dalla riga visibile all’acquirente ma raggiunge comunque Shopify, quindi appare sull’ordine. Questo registra quale versione dei termini era in vigore, non che l’acquirente ha spuntato la casella.
Cose da fare bene
- Punta solo alle classi
cart-external-*. Le gemellecart-internal-*sono la struttura interna del carrello, non un handle per il tuo codice. Vedi CSS personalizzato. - Verifica che
shadowRootesista prima di usarlo. Èundefinedfinché il carrello non si avvia. - Il blocco non renderizza nulla finché il carrello non si carica, quindi il pulsante di checkout non è mai brevemente attivo prima che il blocco si applichi.
- Un blocco React che lancia un errore non renderizza nulla e il resto del carrello va avanti, il che qui significa un pulsante di checkout non protetto. Testa in anteprima prima di pubblicare.
Dove andare adesso
- Blocchi Custom code: la modalità React e le sue props.
- CSS personalizzato: la convenzione delle classi pubbliche.
- Events: cosa può e non può fare l’evento
checkout.