Aller au contenu

October 15, 2013

1

Fonction ajax pour ajouter des produits au panier sous PrestaShop

J’ai eu dernièrement à implémenter une fonction d’ajout au panier en ajax sur une page custom dans PrestaShop.

Je vais donc partager avec vous ce petit bout de code très utile.

<script type="text/javascript">
ajaxCart.add(ID_PRODUCT , ID_ATTRIBUTE , AJOUTAPARTIRDELAFICHEPRODUIT , ELEMENT , QUANTITY , WISHLIST);
ajaxCart.refresh();
</script>

Les paramètres utilisés par la fonction ajaxCart.add()

  • ID_PRODUCT = identifiant du produit à ajouter au panier (requis)
  • ID_ATTRIBUTE = attribut du produit ( si aucun passez null )
  • AJOUTAPARTIRDELAFICHEPRODUIT = Ajouté ou non à partir de la fiche produit ( true ou false )
  • ELEMENT = élement html du bouton utilisé pour ajouter le produit au panier ( permet de disabled l’élément si la quantité est à 0 suite à l’ajout par exemple )
  • QUANTITY = Quantité de produits à ajouter ( null pour 1 produit ou alors passer un entier )
  • WISHLIST = Ajout ou non à la wishlist (passer null pour ajout au panier)

ajaxCart.refresh(); va permettre de rafraichir le bloc panier suite à l’ajout.

La déclaration de ces fonctions se trouve dans le fichier /modules/blockcart/ajax-cart.js

Publié par
Plus d'articles pour la catégorie Tutoriels
24 Commentaires Poster un commentaire
  1. May 16 2012

    Merci Emilien pour le partage ;)

    Reply
  2. mido
    May 16 2012

    salut merci pour le code, moi j’ai un probleme quand j’ajoute un produit ou je veux vider mon panier y a une erreur (une fenetre javascript ) qui s’affiche avec l’erreur suivant :

    technical error : unable to add the product
    details : error thrown: [object XMLHttpRequest]
    text status : parsererror

    quand je click apres sur ok le produit n’est pas ajouter au panier mais quand j’actualise la page là le produit il est ajouter

    on m’a dit que l’erreur vien de fichier /modules/blockcart/ajax-cart.js

    mais je sais pas comment procéder

    Reply
    • eMizZ
      May 16 2012

      Tu as activé le bloc panier et activer le mode ajax ?

      Reply
  3. mido
    May 16 2012

    ou ça ?

    Reply
    • eMizZ
      May 16 2012

      BO->modules->bloc panier

      Reply
  4. mido
    May 16 2012

    oui il est activé et le ajax aussi

    Reply
  5. May 18 2012

    Bonjour,
    j’ai ajouté le code, j’ai un problème quand j’active ajax les articles s’ajoutent bien au panier mais que lorsque j’ai au moins rafraîchi la page une fois.
    Auriez-vous une idée ?
    cordialement

    Reply
    • eMizZ
      May 18 2012

      Le bloc panier est actif et le mode Ajax également ?

      Reply
  6. May 19 2012

    bonjour,

    Cela fonctionne, j’avais oublié de vider compile smarty
    Merci encore pour ce script.

    cordialement

    Reply
  7. Upomme
    Jul 16 2012

    Bonjour,

    J’ai un petit soucis, j’aimerai ajouter un produit avec un champs personnalisé (qui sera déjà complété) mais je ne trouve pas comment faire.

    Est-il possible de l’ajouter avec Ajax ?

    Merci d’avance

    Reply
    • Gehash
      Feb 19 2013

      Salut, je sais que ça date comme sujet, mais c’est exactement ce que j’essaie de faire. As-tu trouvé une solution a ce problème ?
      Merci :)

      Reply
  8. Alain
    Jul 17 2012

    merci pour cette explication, que je viens d’implémenter sans probléme. En complément pour le produit ajouté au pannier je souhaite également renseigner des champs (1 image et 1 texte) pour personnaliser le produit. Je ne trouve pas la fonction a utiliser pour faire ca.
    Si ce n’est pas abuser, merci d’avance.

    Alain

    Reply
  9. Jul 25 2012

    j’ai utilisé cette fonction avec l’option déclinaisons et j’ai le message d’erreur : “vous avez atteint la quantité maximum pour ce produit” au moment de l’ajout de certain produits au panier
    pour info mon bouton ajouter est sur la home page, j’ai fait comme ceci :
    var id_att = $(this).attr(‘id’).replace(‘id_attribut_’, ”);
    ajaxCart.add(idProduct, id_att, false, this);

    quelqu’un a une idée ou est l’erreur ?

    Merci d’avance

    Reply
  10. lvdl
    Jul 28 2012

    Un peu plus haut, ‘mido’ a présenté un PB qui arrive apparemment à beaucoup d’utilisateur de PS mais dont personne a su donner une réponse. Le PB est l’affichage d’une alerte provenant du script ajax-cart.js que je rappelle:
    technical error : unable to add the product
    details : error thrown: [object XMLHttpRequest]
    text status : parsererror
    Dans ce cas, les défauts suivants apparaissent:
    1/ l’animation de l’image produit vers le block panier ne se fait pas:
    2/ La rafraichissement du block panier ne se fait pas
    Le panier est tout de même correctement mis à jour.
    De plus, si la quantité maximum de commande du produit est atteinte, le fonctionnement redevient normal: anim + alert(“vous avez atteint la quantité max de commande de ce produit”).

    En traçant le PB, ajax-cart.js envoi un POST à “cart.php” qui fournit une réponse incomplète (apparemment interromppu à cause d’un erreur interne non tracée) ce qui déroute le script ajax-cart.js sur sa fonction d’erreur.
    C’est donc du côté ‘cart.php’ qu’il faudrait regarder, ou plutôt des “données” utilisées par cart.php.
    Mais là, aucune info n’apparait sur le Net si ce n’est que de “filer” ses codes d’accès au back-office à un “développeur PS” qui farait lui-même la correction des erreurs apparues.
    Je trouve cela un peu fort de café !
    Alors je me pose plusieurs questions:
    => Pour quelle raison il n’est jamais dit ce qu’il faut “réaligner” pour supprimer le PB (puisqu’apparemment un dév PS le fait en 2 temps 3 mouvements) ?
    => Pourquoi aucune cause d’apparition du PB n’est donnée ? Même si la correction existe, je ne vais pas quand même pas filer toutes mes clés à un dev PS à chaque fois que cela apparait !

    Alors si une personne de bonne volonté pouvait répondre à ces questions simplement cela serait plus cool.

    C’est vrai que dans le cas contraire, je ne serais pas trop encouragé pour continuer avec ce système (PS), car il donne l’impression de ne pas être stable (PB appraissant sans aucune cause identifiée) et de plus totalement non sécurisé puisqu’il faut donner les code d’accès à un développeur lambda PS pour corriger le PB !
    Dans ce cas, PS apparaitrait comme une solution pour le moins harsardeuse.

    Merci pour des réponses faisant avancer le smilblik !

    Reply
    • Matthieu
      May 3 2013

      Bonjour à tous,

      J’ai exactement le même problème qu’lvdl. Le problème est que la réponse reçue est la page d’index en entier et pas seulement un array des produits avec le lien, l’id, la quantité des produits…

      Comme tout semble très bien fonctionner en local, je m’interroge…
      Est-ce que vous avez réussi à résoudre le problème de votre côté ?

      Reply
  11. manue
    Aug 31 2012

    Bonjour,

    Vérifiez le fichier config.inc.php, l’affichage des erreurs m’a déjà posé le même genre de problème…

    Les valeurs doivent être :
    /* Debug only */
    @ini_set(‘display_errors’, ‘off’);
    define(‘_PS_DEBUG_SQL_’, false);

    Reply
  12. tbj
    Sep 30 2012

    Bonjour à tous

    après de multiples recherches concernant le problème : message d’erreur suivant : “vous avez atteint la quantité maximum pour ce produit”.

    la solution que j’ai trouvé : mettre “non” au mode catalogue, dans le back office de prestashop , dans la catégorie Panneau d’administration > Préférences > Produits

    ceci a résolu mon problème.

    Reply
  13. aqel
    Feb 22 2013

    bonjour,
    j’ai créer un module qui gère les produits, autrement dit il ressemble au panier. Donc le problème que j’ai c’est que à la fin du traitement de ce module la totalité des produits doit passer au panier mais un message s’affiche que le produit n’existe plus.

    Reply
  14. Mar 25 2013

    bonjour, sos je ne trouve pas la solution pour supprimer le problème : “Vous avez déjà la quantité maximale disponible pour ce produit.”
    si qqu un connait la solution ce serait sympa de me la communiqué merci pour votre aide.

    Reply
  15. Apr 7 2013

    Bonjour

    Merci de préciser ou je dois mettre le code et dans quel dossier
    car j ‘ai ce problème Et en plus je de peux plus changer le statut de mes clients et impossible de modifier une déclinaison

    voir mon site

    Merci d’avance

    Reply
  16. Apr 18 2013

    Après une étude minutieuse du problème de Mido dans mon site. les chemins d’images de personnalisation étaient retournées avec un caractère de retour chariot qui invalide le format Json.
    comme j’ai pas besoin des images de personnalisation, je les ai simplement virée.

    Reply
  17. val
    May 20 2013

    bonjour

    je rencontre le même problème que “bjm” 2 posts plus h aut.

    impossibilité d’ajouter un article au panier car message
    ” vous avez déjà la quantité maximale disponible our ce produit”

    le mode catalogue est désactivé, les stocks sont en quantité à 1000, il n’y a aucune raison pour que cela arrive.

    pourriez vous m’aider ?

    merci d’avance !

    Reply
  18. Nov 18 2013

    Hello,

    Merci pour ton blog car il n’y a pas beaucoup de tuto sur Prestashop (si on compare avec d’autres CMS généralistes comme Joomla ou wordPress.

    Au sujet de la méthode ajaxCart.add, serait-il possible de donner plus d’infos sur le paramètre ELEMENT (ou callerElement) ? Je ne vois pas comment le récupérer.

    Reply
  19. Jaber
    Nov 22 2013

    Bonjour a tous est ce que cette fonction marche sur un site drupal commerce ?2

    Reply

Partagez votre opinion, postez un commentaire.

(requis)
(requis)

Note: Le HTML est autorisé. Votre e-mail (ne sera pas publié).

S'abonner aux commentaires


+ 9 = 10