Skip to main content
Surveillez le total du panier et gardez un cadeau gratuit synchronisé avec lui : ajoutez le cadeau dès que l’acheteur franchit un seuil de dépense, retirez-le s’il redescend en dessous.
Pour une version configurée par le marchand avec des paliers, des règles par marché et une barre de progression, utilisez le bloc Rewards, sans code. Ceci est destiné aux cas où votre règle est quelque chose que le bloc ne peut pas exprimer.

L’extrait

Collez dans Cart settings → Custom script → Initialization, et définissez les deux constantes :

Comment ça fonctionne

reconcileGift décrit l’état dans lequel le panier devrait être, puis effectue au plus une modification pour y parvenir :
  • Éligible et le cadeau n’y est pas → addItem l’ajoute.
  • Non éligible et le cadeau y est → removeItem le retire, via la key de la ligne.
  • Sinon → ne rien faire.
Elle s’exécute à la fois sur cart_loaded (afin qu’un panier déjà éligible au chargement de la page reçoive le cadeau) et sur cart_updated (afin qu’elle réagisse à chaque modification ultérieure). Comme cart_loaded est rejoué pour les abonnés tardifs, cela fonctionne quel que soit le moment où votre script s’exécute.
Les garde-fous !gift / gift sont ce qui empêche cette boucle. Ajouter le cadeau déclenche cart_updated, qui exécute à nouveau reconcileGift, et le second passage trouve le cadeau déjà présent, donc il ne fait rien. Retirez les garde-fous et vous obtenez une boucle infinie. Consultez les deux règles.
Notez qu’ajouter le cadeau augmente le total du panier, donc un seuil proche du prix d’un produit peut osciller : ajouter un cadeau à $0 est sûr, mais un cadeau avec un prix pourrait à lui seul pousser le panier au-dessus du seuil. Gardez le cadeau gratuit, ou comparez avec un total qui l’exclut.

L’adapter

Conditionner sur le nombre d’articles au lieu de la dépense :
Conditionner sur la présence d’un produit spécifique dans le panier :
Seulement dans certains pays. Lisez context, disponible avant le chargement du panier :
Exclure le cadeau du seuil pour qu’il ne puisse pas se maintenir lui-même :
Marquer le cadeau pour qu’il se lise comme un cadeau. Une transformation de ligne peut changer le titre d’une ligne, le titre de sa variante, son état masqué et ses propriétés internes. Renommez-la donc :
Une transformation de ligne ne peut pas masquer les contrôles de quantité d’une ligne. Ses seuls setters sont setTitle, setVariantTitle, setHidden et setInternalProperties. Si un acheteur change la quantité du cadeau, corrigez-la plutôt depuis un gestionnaire cart_updated.

Pour aller plus loin

  • Bloc Rewards : la version sans code, avec des paliers.
  • Actions : addItem, removeItem et le reste.
  • Événements : pourquoi les garde-fous sont importants.