Skip to main content
Les actions lisent et modifient le panier. Elles se trouvent sous window.aftersell.cart.actions.
Les actions s’exécutent après que le panier est prêt, à l’intérieur de ready() ou d’un gestionnaire d’événement.
Avant le chargement du panier, les actions sont des stubs. Chacune émet un avertissement dans la console nommant l’action, par exemple cart.actions.addItem() called before the cart loaded, et ne fait rien. Les actions asynchrones résolvent quand même une Promise, donc une chaîne .then() s’exécute normalement au lieu de lever une exception ; getCart() renvoie null et formatMoney() renvoie une chaîne vide.Rien ne casse si vous en appelez une trop tôt, mais rien ne se passe non plus. Surveillez cet avertissement dans la console lorsqu’une action semble ne rien faire.

Toutes les actions

Appeler une action depuis un gestionnaire cart_updated peut boucler. Lisez d’abord les deux règles.

Tiroir

open et close

Ouvrent ou ferment le tiroir du panier. Les deux sont synchrones et ne prennent aucun argument.

Lecture

getCart()

Renvoie l’objet cart actuel, ou null avant son chargement. Le résultat est une copie, donc le muter ne changera pas le vrai panier.
Comme il s’agit d’un instantané, ne conservez pas le résultat ; relisez-le chaque fois que vous avez besoin de données à jour. Dans un gestionnaire d’événement, vous avez déjà le panier à jour comme charge utile, donc getCart() y est redondant.

formatMoney(cents)

Formate un montant en unités mineures selon le format monétaire de votre boutique. Chaque prix dans le SDK est en centimes, c’est donc ainsi que vous en transformez un en quelque chose d’affichable.
Remplacez le format avec configure({ money_format }).

Modifier le panier

Les actions sur les articles identifient une ligne par sa key Shopify, pas par l’ID de variante, car un panier peut contenir la même variante sur plusieurs lignes avec des propriétés différentes. Lisez-la depuis getCart().items[n].key.

addItem(variantId, quantity?)

Ajoute une variante au panier. quantity vaut 1 par défaut. Se résout une fois le panier stabilisé.
Ajouter une variante déjà présente dans le panier augmente la quantité de cette ligne plutôt que de créer une seconde ligne, tant que la ligne existante n’a pas de propriétés d’article. Une ligne portant des propriétés est une ligne distincte, vous en obtenez donc une nouvelle.

removeItem(key)

Supprime entièrement une ligne.

updateItemQuantity(key, quantity)

Définit la quantité d’une ligne. Passer 0 supprime la ligne.
Ce second exemple peut s’exécuter en toute sécurité depuis cart_updated parce que la vérification > 1 est fausse au second passage. Consultez les deux règles.

replaceLineVariant(key, variantId)

Change la variante d’une ligne tout en conservant sa quantité et ses propriétés. Utile pour un sélecteur de taille ou de parfum à l’intérieur du panier.
Le plan de vente de la ligne est réinitialisé lors d’un échange. Une ligne d’abonnement devient un achat unique sauf si vous réappliquez un plan.
L’échange est un ajout suivi d’une suppression, pas une modification sur place, donc le résultat est une nouvelle ligne : elle reçoit une nouvelle key et atterrit à la fin du panier. Relisez getCart() ensuite plutôt que de réutiliser la clé que vous avez passée.

Rafraîchissement

refresh()

Recharge le panier depuis Shopify. Utilisez-la après qu’un élément extérieur au SDK a modifié le panier sans que le tiroir ne s’en aperçoive.
La plupart du temps, vous n’en avez pas besoin, car Aftersell écoute déjà les événements de panier standard de Shopify et recharge de lui-même. Utilisez-la lorsqu’une intégration personnalisée les contourne.

visualRefresh()

Ré-exécute les transformations de rendu sans recharger le panier depuis Shopify. Vous en avez rarement besoin : enregistrer (ou désenregistrer) une transformation de ligne, un comparateur, un enrichisseur ou l’un des deux hooks d’abonnement en déclenche une pour vous. Seuls les deux hooks d’ajout au panier ne le font pas, puisqu’ils ne changent rien de ce qui est déjà à l’écran. Utilisez-la lorsqu’un élément dont une transformation dépend change alors que le panier lui-même n’a pas changé :

Notes et cas particuliers

  • Les actions asynchrones se résolvent lorsque le changement est stabilisé. En attendre une vous permet de séquencer du travail après que le panier a réellement été mis à jour.
  • getCart() renvoie une copie. La muter ne fait rien au vrai panier.
  • Il n’y a pas d’action pour les codes de réduction. Les codes appliqués sont lisibles sur le panier (discountCodes, totalDiscount) et par ligne (discountAllocations) ; les acheteurs les appliquent via le bloc Discount code.
  • Il n’y a pas d’action pour les attributs de panier ou les notes. Les attributs sont lisibles sur l’objet cart ; les acheteurs écrivent des notes via le bloc Notes.
  • Pour masquer une ligne plutôt que de la supprimer, utilisez registerLineTransform. La suppression modifie le total de l’acheteur ; le masquage non.

Pour aller plus loin

  • Objet cart : ce que getCart() renvoie.
  • Événements : quand exécuter ces actions.
  • Hooks : modifiez le rendu d’une ligne au lieu de modifier le panier.
  • Cas d’usage : des solutions complètes aux demandes courantes.