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.

Ajouter et activer un bloc Custom code
- Ajoutez un bloc Custom code à n’importe quelle section, ou en tant que sous-bloc sous Cart items.
- Sélectionnez-le et ouvrez l’onglet Code.
- Choisissez HTML ou React component. Les nouveaux blocs sont en HTML par défaut.
- Écrivez votre code.
- Si vous avez choisi React, cliquez sur Compile.
- 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.
- Gardez le bouton œil de la barre latérale activé pour que le bloc reste visible pour les acheteurs.
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
- 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
%, ou une quantité), prêtes à être insérées dans le balisage :
Exemple
Mode React
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,useRefetuseCallback. - Contrairement au mode HTML, React s’exécute dans le contexte de la page, il peut donc appeler
windowet 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
$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 :
linen’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,lineestnullet vous lisezcart.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 dansline.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
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
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.