So funktioniert es
- Ein Custom-Code-Block unter dem Checkout-Button rendert die Checkbox.
- Solange die Box nicht angekreuzt ist, fügt der Block über die Shadow Root den Checkout- und Express-Payment-Buttons des Warenkorbs eine Klasse hinzu.
- Custom CSS sorgt dafür, dass diese Klasse Klicks deaktiviert.
Schritt 1: Füge den Checkbox-Block hinzu
props.cart ist wichtig: Sie wendet die Klasse nach jedem Re-Render des Warenkorbs erneut an, der sie sonst entfernen würde.
Schritt 2: Füge das CSS hinzu
pointer-events: none blockiert den Klick tatsächlich; die Deckkraft zeigt Käufern lediglich, warum.
Schritt 3: Teste es
- Der Checkout-Button beim Laden abgedunkelt ist und nicht auf Klicks reagiert.
- Das Ankreuzen der Box ihn aktiviert; das Entfernen des Häkchens deaktiviert den Button wieder.
- Auch Express-Payment-Buttons gesperrt sind.
- Das Hinzufügen oder Entfernen eines Artikels den Button nicht wieder aktiviert, solange die Box nicht angekreuzt ist.
props.cart im Dependency-Array steht.
Nachverfolgen, wer zugestimmt hat
properties[...] direkt aus dem Formular, sodass der Wert die Bestellung erreicht, egal wer das Hinzufügen ausführt: Aftersell, das Theme oder eine andere App.
Eine mit _ beginnende Property bleibt aus der käufersichtbaren Zeile heraus, erreicht Shopify aber trotzdem und erscheint somit auf der Bestellung. Damit wird festgehalten, welche AGB-Version aktiv war, nicht dass der Käufer die Box angekreuzt hat.
Worauf du achten solltest
- Ziele nur auf
cart-external-*-Klassen. Diecart-internal-*-Gegenstücke sind die interne Mechanik des Warenkorbs, kein Ansatzpunkt für deinen Code. Siehe Custom CSS. - Prüfe, ob
shadowRootexistiert, bevor du sie verwendest. Sie istundefined, bis der Warenkorb gestartet ist. - Der Block rendert nichts, bis der Warenkorb geladen ist, sodass der Checkout-Button nie kurzzeitig aktiv ist, bevor die Sperre greift.
- Ein React-Block, der einen Fehler wirft, rendert nichts, und der Rest des Warenkorbs läuft weiter — was hier einen ungesicherten Checkout-Button bedeutet. Teste in der Vorschau, bevor du veröffentlichst.
Nächste Schritte
- Custom-Code-Blöcke: der React-Modus und seine Props.
- Custom CSS: die Konvention der öffentlichen Klassen.
- Events: was das
checkout-Event kann und was nicht.