Skip to main content
Le bloc Custom code ajoute votre propre HTML ou React au panier. Placez-le dans n’importe quelle section du tiroir, ou imbriquez-le dans Cart items en tant que sous-bloc pour qu’il se répète à chaque ligne. Contrairement aux autres blocs, il n’a pas de paramètres Content ni de section Design : le bloc est le code, vous travaillez donc entièrement dans son onglet Code.
Aperçu animé de l'ajout et de l'activation d'un bloc Custom code dans l'éditeur Aftersell Cart

Ajouter et activer un bloc Custom code

  1. Ajoutez un bloc Custom code à n’importe quelle section, ou en tant que sous-bloc sous Cart items.
  2. Sélectionnez-le et ouvrez l’onglet Code.
  3. Choisissez HTML ou React component. Les nouveaux blocs sont en HTML par défaut.
  4. Écrivez votre code.
  5. Si vous avez choisi React, cliquez sur Compile.
  6. Activez “Use custom template”. Pour ce bloc, cet interrupteur signifie « afficher mon code personnalisé », et il est désactivé par défaut, donc rien ne s’affiche tant que vous ne l’activez pas.
  7. Gardez le bouton œil de la barre latérale activé pour que le bloc reste visible pour les acheteurs.
Le bouton œil et “Use custom template” doivent tous deux être activés pour que le bloc apparaisse.

Comportement

  • Le bloc n’affiche rien tant que le panier n’est pas chargé.
  • Il n’affiche rien non plus lorsque l’œil de la barre latérale est désactivé, que “Use custom template” est désactivé, que le code est vide, ou que React échoue à compiler ou à s’afficher. Comme un échec est silencieux, vérifiez votre bloc en aperçu avant de publier.

Mode HTML

Le mode HTML substitue un petit ensemble de jetons dans votre balisage. Il est destiné au contenu statique ou piloté par jetons, pas à l’exécution de logique.
  • Les balises <script> en ligne ne s’exécutent pas, et le mode HTML n’a aucun accès au SDK ni à window.
  • Pour la logique, utilisez le mode React ou les Custom scripts avec le Cart SDK.

Jetons

Les valeurs des jetons sont des chaînes formatées (format monétaire de la boutique, un pourcentage avec %, ou une quantité), prêtes à être insérées dans le balisage :

Exemple

Mode React

Le mode React compile un composant et lui transmet les données du panier ainsi qu’une action add-to-cart.
  • L’éditeur verrouille l’enveloppe sur function CustomCode(props: CustomCodeProps) { … }, et vous ne modifiez que le corps entre ces lignes.
  • Vous devez cliquer sur Compile puis activer “Use custom template”, avant que le bloc ne s’affiche.
  • Votre composant peut utiliser useState, useEffect, useMemo, useRef et useCallback.
  • Contrairement au mode HTML, React s’exécute dans le contexte de la page, il peut donc appeler window et le Cart SDK lorsqu’ils sont disponibles.
  • Si votre composant génère des erreurs à l’exécution, le bloc n’affiche rien et le reste du panier continue de fonctionner.

Props

Les totaux et les montants d’économies sont des entiers dans l’unité mineure de la devise (centimes pour l’USD), donc $12.50 est 1250, pas 12.50. Ce ne sont pas des chaînes monétaires formatées comme les jetons HTML.

Les structures cart et line

cart et line sont les mêmes objets que le SDK expose partout ailleurs, ils sont donc documentés une seule fois dans la référence de l’objet cart : chaque champ du panier, d’une ligne et d’un bundle. Ceux que vous utiliserez le plus : cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice. Trois particularités propres à ce bloc :
  • line n’est définie que sur un sous-bloc de Cart items, où votre composant s’affiche une fois par ligne. Placé en tant que section, line est null et vous lisez cart.items à la place.
  • Les composants de bundle ne figurent pas dans cart.items. Lorsque des lignes sont regroupées en bundle, seule la ligne d’ancrage apparaît ; ses composants se trouvent dans line.bundle.children.
  • Les lignes masquées par une transformation de ligne n’y figurent pas non plus, bien qu’elles comptent toujours dans cart.totalPrice.

Exemples

Afficher le nombre d’articles :
En tant que sous-bloc de Cart items, utilisez props.line pour du contenu par produit. Le bloc s’affiche une fois par ligne, marqué avec le produit et la variante de cette ligne :

Lire les métadonnées d’enrichissement

Chaque article de cart.items porte un champ metadata : un objet vide {} jusqu’à ce qu’un enrichisseur de panier le remplisse. Une fois rempli, il est indexé par l’id de l’enrichisseur et contient les données Storefront du produit ou de la variante de cette ligne :
metadata est toujours présent et vaut par défaut un objet vide {} jusqu’à ce que la récupération asynchrone de l’enrichisseur se termine (le test « pas encore enrichi » est Object.keys(item.metadata).length === 0). Utilisez le chaînage optionnel (item.metadata?.enricherId) lorsque vous lisez la clé d’un enrichisseur spécifique, car cette clé est absente tant que l’enrichissement n’a pas abouti.

Lire les codes de réduction et les remises de ligne

cart.discountCodes liste les codes de réduction appliqués au panier, et le champ discountAllocations de chaque ligne liste les remises appliquées à cette ligne spécifique :

Placement et limites

  • Région : n’importe laquelle (haut, corps ou bas). Également disponible en tant que sous-bloc de Cart items.
  • Maximum : illimité.
  • État : panier rempli et vide (en tant que bloc de section). En tant que sous-bloc de Cart items, il ne s’affiche que lorsque le panier contient des lignes, une instance par ligne.
  • Non verrouillé, vous pouvez donc le supprimer ou le masquer.
  • Il n’y a pas de section Design par bloc. Stylisez via votre propre balisage, le CSS personnalisé et vos paramètres de design globaux.

Quand utiliser un bloc custom code vs un modèle personnalisé vs un script personnalisé