Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Le bouton « Ajouter au panier » ne répond pas sur PrestaShop

Un clic sur « Ajouter au panier » qui ne fait rien, ou qui déclenche une erreur 500 : ce n’est pas le contenu du panier qui pose problème ici, c’est l’action elle-même qui ne se déclenche pas ou plante en route. Le bouton dépend d’un appel Ajax vers le contrôleur panier, et plusieurs points précis peuvent le bloquer.

Décrire mon problème Discuter sur WhatsApp

Ce qui se passe techniquement au clic

Sur une fiche produit ou dans une liste, le bouton « Ajouter au panier » déclenche un appel Ajax vers le contrôleur panier du thème, sans recharger la page. Si rien ne se passe visuellement, le problème se situe presque toujours avant même que la requête ne parte : un conflit JavaScript empêche le script du bouton de s’exécuter.

Le cas le plus courant est un chargement multiple de jQuery, une fois par le thème et une fois par un module qui ajoute son propre script sans vérifier ce qui est déjà chargé. Le second chargement écrase le premier, et tous les gestionnaires d’événements attachés avant ce moment cessent de fonctionner, y compris celui du bouton panier.

Quand le clic déclenche une erreur 500

Si le clic part bien en Ajax mais renvoie une erreur 500, la cause est presque toujours côté serveur, dans un module accroché à un hook déclenché lors de l’ajout au panier — par exemple actionCartSave. Un module qui plante silencieusement à ce moment-là bloque l’action pour tous les visiteurs, même si le reste du site fonctionne normalement.

Autre cas fréquent : une déclinaison obligatoire (taille, couleur) non sélectionnée. Si le thème ne gère pas bien cette validation côté client, l’ajout échoue sans aucun message visible, ce qui donne l’impression d’un bouton mort.

Configuration ou développement ?

Vider le cache, désactiver les modules un par un pour isoler le conflit JavaScript, ou vérifier les journaux d’erreur pour repérer le module fautif : ce diagnostic suffit souvent à identifier la cause exacte. La correction devient un développement quand il faut réécrire la partie du module en conflit, adapter un hook devenu incompatible avec la version installée, ou sécuriser la soumission de commande contre les doubles clics.

Pages liées

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

Quelle version de PrestaShop ?
Sur quoi avez-vous besoin d’aide ?
Quel est l’état actuel de la boutique ?
Le thème est-il un thème du marché ou sur mesure ? (facultatif)

Un thème très modifié change la façon d’intervenir sans rien casser.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Le bouton ne fait rien sur mobile mais fonctionne sur ordinateur, pourquoi ?
C’est souvent le même conflit JavaScript, mais un thème mobile ou une version allégée du site charge parfois des scripts différents, ce qui explique qu’un problème n’apparaisse que sur un seul type d’appareil.
Comment savoir si c’est un module qui bloque le bouton ?
Je désactive les modules récemment installés ou mis à jour, un par un, et je reteste après chaque désactivation. C’est souvent le moyen le plus rapide d’isoler le module responsable avant d’aller lire son code.
Le bug apparaît juste après une mise à jour de PrestaShop, est-ce lié ?
Oui, c’est un déclencheur fréquent : un module écrit pour une version plus ancienne peut s’accrocher à un hook qui a changé de comportement, ce qui casse l’ajout au panier sans toucher au reste du site.
Le double-clic sur « Commander » peut-il vraiment créer deux commandes ?
Oui si rien n’empêche une seconde soumission pendant que la première est en cours de traitement. C’est un point que je vérifie systématiquement, séparément du problème d’ajout au panier.
Faut-il un développeur pour ce genre de bug ?
Pas toujours : isoler la cause avec un diagnostic par désactivation suffit souvent. Un développement devient nécessaire quand il faut corriger le code du module en conflit ou adapter un hook obsolète.