Fonctionnement
- Un bloc de code personnalisé sous le bouton de paiement affiche la case à cocher.
- Tant que la case n’est pas cochée, le bloc ajoute une classe aux boutons de paiement et de paiement express du panier via le shadow root.
- Le CSS personnalisé fait en sorte que cette classe désactive les clics.
Étape 1 : Ajouter le bloc de case à cocher
props.cart est importante : elle réapplique la classe après un nouveau rendu du panier, qui l’effacerait sinon.
Étape 2 : Ajouter le CSS
pointer-events: none est ce qui bloque réellement le clic ; l’opacité montre simplement au client pourquoi.
Étape 3 : Tester
- Le bouton de paiement est grisé et ne répond pas aux clics au chargement.
- Cocher la case l’active ; la décocher désactive à nouveau le bouton.
- Les boutons de paiement express sont également conditionnés.
- Ajouter ou retirer un article ne réactive pas le bouton tant que la case n’est pas cochée.
props.cart figure dans le tableau de dépendances.
Suivre qui a accepté
properties[...] directement depuis le formulaire, donc la valeur parvient à la commande quel que soit celui qui effectue l’ajout : Aftersell, le thème ou une autre application.
Une propriété préfixée par _ reste invisible sur la ligne côté acheteur mais atteint quand même Shopify, elle apparaît donc sur la commande. Cela enregistre quelle version des conditions était en vigueur, pas que le client a coché la case.
Points à ne pas manquer
- Ne ciblez que les classes
cart-external-*. Les jumellescart-internal-*sont la tuyauterie interne du panier, pas une prise pour votre code. Voir CSS personnalisé. - Vérifiez que
shadowRootexiste avant de l’utiliser. Il vautundefinedjusqu’au démarrage du panier. - Le bloc n’affiche rien tant que le panier n’est pas chargé, donc le bouton de paiement n’est jamais brièvement actif avant l’application du verrou.
- Un bloc React qui lève une exception n’affiche rien et le reste du panier continue, ce qui signifie ici un bouton de paiement non protégé. Testez dans l’aperçu avant de publier.
Où aller ensuite
- Blocs de code personnalisés : le mode React et ses props.
- CSS personnalisé : la convention de classes publiques.
- Événements : ce que l’événement
checkoutpeut faire et ne pas faire.