Jak to działa
- Blok Custom code pod przyciskiem checkoutu renderuje checkbox.
- Dopóki pole jest odznaczone, blok dodaje klasę do przycisków checkoutu i płatności ekspresowych koszyka poprzez shadow root.
- Custom CSS sprawia, że ta klasa wyłącza kliknięcia.
Krok 1: Dodaj blok z checkboxem
props.cart ma znaczenie: ponownie stosuje klasę po ponownym renderze koszyka, który w przeciwnym razie by ją wymazał.
Krok 2: Dodaj CSS
pointer-events: none faktycznie blokuje kliknięcie; przezroczystość jedynie pokazuje kupującemu dlaczego.
Krok 3: Przetestuj
- Przycisk checkoutu jest przygaszony i nie reaguje na kliknięcia przy załadowaniu.
- Zaznaczenie pola go włącza; odznaczenie ponownie wyłącza przycisk.
- Przyciski płatności ekspresowych też są bramkowane.
- Dodanie lub usunięcie produktu nie włącza ponownie przycisku, gdy pole jest odznaczone.
props.cart znajduje się w tablicy zależności.
Śledzenie, kto zaakceptował
properties[...] bezpośrednio z formularza, więc wartość dociera do zamówienia niezależnie od tego, kto wykonuje dodanie: Aftersell, motyw czy inna aplikacja.
Właściwość z przedrostkiem _ pozostaje poza pozycją widoczną dla kupującego, ale nadal dociera do Shopify, więc pojawia się na zamówieniu. To zapisuje, która wersja regulaminu obowiązywała, a nie to, że kupujący zaznaczył pole.
Rzeczy, które trzeba zrobić dobrze
- Celuj tylko w klasy
cart-external-*. Bliźniaczecart-internal-*to wewnętrzna maszyneria koszyka, a nie uchwyt dla Twojego kodu. Zobacz Custom CSS. - Sprawdzaj, czy
shadowRootistnieje, zanim go użyjesz. Jestundefined, dopóki koszyk nie wystartuje. - Blok nie renderuje niczego przed załadowaniem koszyka, więc przycisk checkoutu nigdy nie jest przez chwilę aktywny, zanim zadziała bramka.
- Blok React, który rzuci błąd, nie renderuje niczego, a reszta koszyka działa dalej, co tutaj oznacza niezabezpieczony przycisk checkoutu. Przetestuj w podglądzie przed publikacją.
Co dalej
- Bloki Custom code: tryb React i jego propsy.
- Custom CSS: konwencja publicznych klas.
- Events: co zdarzenie
checkoutmoże, a czego nie może.