En voilà une drôle de question… pourquoi vouloir supprimer le comportement Ajax du panier Prestashop ? Par mesure de simplification pour écrire un code plus court lorsqu’il faut faire un développement sur mesure.
Le comportement du panier
En standard sur Prestashop vous avez un joli effet quand vous effectuez l’ajout au panier, cela continue ensuite lorsque vous êtes dans la page du récapitulatif panier et que vous ajoutez des quantités ou que vous supprimez des produits. Par contre, on peut parfois vouloir retirer ce comportement pour gagner en clarté lors de l’opération (parce qu’il y’a des effets et l’utilisateur ne voit pas toujours bien ce qui se passe), mais surtout pour simplifier l’intégration de développements spécifiques.

L’édition de produits dans le panier se fait en toute transparence par défaut et sans rechargement de page, un confort qui a été pensé à la base pour faciliter la vie à l’acheteur.
Supprimer l’Ajax pour mieux coder
Par expérience il y’a des demandes de clients qui reviennent souvent en développement spécifique… Par exemple déclencher une action bien précise lorsqu’on est sur une fiche produit et qu’on ajoute le produit au panier, ou alors des actions qui peuvent s’effectuer en fonction de ce que l’acheteur fait dans le panier… On peut imaginer que le client voudrait :
- afficher une information en temps réel lors de l’ajout au panier
- afficher une calculation spécifique des frais de ports en instantané
- afficher une information si X conditions sont réunies dans le panier
Le problème c’est que si l’Ajax est conservé, il ne suffit pas de modifier le comportement de Prestashop (via classes / controllers), il faut coder aussi toute la partie rafraichissement Ajax de la boutique et cela coûte aussi beaucoup plus cher au client. En retirant ce comportement, les pages seront toujours rechargées de manière « classique » ce qui diminue le temps de développement qui sera facturé au client.
Pour commencer il faut désactiver le comportement Ajax du panier Prestashop, pour cela il faut désactiver cette option dans les modules de Prestashop, plus précisément le module « Bloc panier ».

Rare sont les boutiques qui désactivent cette option, pourtant elle peut donner un sentiment d’exécution plus rapide lorsque le client ajoute un produit au panier. A noter que cette option redirige automatiquement le client dans le panier lors de l’ajout d’un produit.
Ensuite, dans le fichier présent dans votre thème sous « /js/cart-summary.js », il suffit de faire quelques modifications en ajoutant un « return true » qui va désactiver le traitement Ajax et préconiser un rechargement de page classique.
$(document).ready(function(){ $('.cart_quantity_up').off('click').on('click', function(e){ /* Webbax - no ajax */ return true; e.preventDefault(); upQuantity($(this).attr('id').replace('cart_quantity_up_', '')); }); $('.cart_quantity_down').off('click').on('click', function(e){ /* Webbax - no ajax */ return true; e.preventDefault(); downQuantity($(this).attr('id').replace('cart_quantity_down_', '')); }); $('.cart_quantity_delete' ).off('click').on('click', function(e){ /* Webbax - no ajax */ return true; e.preventDefault(); deleteProductFromSummary($(this).attr('id')); });
Bilan
Mais à qui ça va servir me direz-vous ? A ceux qui veulent faire un développement sur mesure qui va influencer le panier. En terme de ratio temps, j’ai envie de dire que le PHP va prendre 1/3 du temps et le traitement Ajax 2/3. Pour une intégration optimale le prix serait donc 3x plus cher et dans la plupart des cas le client préfère aller à l’essentiel en désactivant le mode Ajax qui n’est pas forcément indispensable.