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
Tiroir
open et close
Lecture
getCart()
null avant son chargement. Le résultat est une copie, donc le muter ne changera pas le vrai panier.
getCart() y est redondant.
formatMoney(cents)
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?)
quantity vaut 1 par défaut. Se résout une fois le panier stabilisé.
removeItem(key)
updateItemQuantity(key, quantity)
0 supprime la ligne.
cart_updated parce que la vérification > 1 est fausse au second passage. Consultez les deux règles.
replaceLineVariant(key, variantId)
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()
visualRefresh()
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.