Le code ci-dessous sert à ajouter des produits au panier d’un visiteur quand il clique sur « Ajouter au panier » dans un widget de recommandation (certains widgets proposent cette fonctionnalité).
Une configuration correcte vous permet d’utiliser la fonctionnalité d’« ajout rapide au panier » lorsque vous recommandez un article à un visiteur : il peut ajouter rapidement et facilement un ou plusieurs produits à son panier sans passer par leurs pages produit. Pour Magento, Shopify, etc., vous pouvez demander à votre gestionnaire de compte des modèles existants compatibles avec cette fonctionnalité, prêts à l’emploi.

Veuillez modifier ce modèle de code dans les paramètres d’interactions produit de votre compte :

Vous pouvez modifier la variable transmise à la fonction de votre site depuis les réglages du widget

/** Ce code doit contenir la fonction appelée “add_to_cart_for_personyze”.
@param products – tableau d’objets, chaque objet ayant les champs “internal_id” et “quantity”.
Personyze transmettra l’”internal_id” qui figure dans le catalogue de produits.
@param arg – undefined par défaut, mais vous pouvez indiquer une valeur arbitraire dans les réglages de chaque action.
@return {Promise} – Promise tenue à la fin de l’opération.
**/
function add_to_cart_for_personyze(products, arg)
{ // Nous voulons ajouter chacun de ces produits dans une requête distincte.
// Si l’API de votre site permet d’ajouter plusieurs produits en une seule requête, le code suivant sera plus simple.
let all = []
for (let i=0; i<products.length; i++)
{ // Remplacez ceci par votre véritable requête.
all[i] = fetch
( ‘/cart/add’,
{ mode: ‘cors’,
credentials: ‘include’,
method: ‘POST’,
body: ‘product=’+products[i].internal_id+’&qty=’+products[i].quantity
}
).then
( response =>
{ if (!response.ok)
{ throw new Error(response.statusText)
}
return response.text()
}
)
}
// Terminé.
returnPromise.all(all)
// Ou, si votre réponse contient l’état actuel du panier, il est bon de mettre à jour l’état de Personyze.
returnPromise.all(all).then
( responses =>
{ personyze.push([‘Products Removed from cart’])
for (let response of responses)
{ response = JSON.parse(response) // ou utilisez response.json() dans fetch
for (let product of response.currently_in_cart)
{ personyze.push([‘Product Added to cart’, product.id])
}
}
}
)
}