Jump to content

Problème d'ajout de produit au panier Prestashop 1.5.0.17


ideo77

Recommended Posts

Bonjour à tous,

je suis en train de développer un site prestashop, avec la version 1.5.0.17 que j'ai téléchargée récemment, avec le thème par défaut.

Mon souci est quand je clique sur "ajouter au panier" dans une page "liste de produit", ça m'envoie directement sur la page "panier" sans ajouter le produit concerné.

En revanche lorsque je suis sur la page "produit seul", le bouton "ajouter au panier" fonctionne normalement.

 

Je n'ai modifié que quelques CSS, donc je ne comprend pas d'où vient le problème.

 

Des idées ?

merci d'avance

Link to comment
Share on other sites

Bonjour,

 

J'ai une piste :

 

Dans une liste de produit (product-list.tpl), le bouton ou le lien "Ajouter au panier" est sous forme d'url direct, contrairement à une page Produit (product.tpl) où il se fait par une méthode de formulaire.

Mais il se trouve que le lien transmis par url dans une liste de produit utilise un codage pour certains caractères spécifiques de paramètres d'url qui ne sont pas valides, au lieu de caractères bruts. Je trouve aussi un signe "égal" superflu à la fin des paramètres. Ex. :

 

http://...site.com/panier?add%26id_product%3D1%26token%3D123456789=

 

au lieu de :

 

http://...site.com/panier?add&id_product=1&token=123456789

 

Seulement je ne sais pas comment corriger ça dans le moteur de Prestashop ; si quelqu'un sait...

Edited by fbarret (see edit history)
Link to comment
Share on other sites

Bon j'ai trouvé,

 

Dans le fichier product-list.tpl, il faut corriger les lignes des liens d'ajout au panier. Dans le code de l'attribut "href", remplacer "true" par "false" :

{$link->getPageLink('cart',false, NULL, "add& [...] ={$static_token}", true)} (pas bon)

{$link->getPageLink('cart',false, NULL, "add& [...] ={$static_token}", false)} (OK)

 

Ce paramètre désactive l'encodage d'url dans la fonction appelée car il n'a pas lieu d'être ici.

 

De plus, les guillemets ont été oubliés à la fin du second lien !

Le lien complet et valide est :

href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", false)}"

 

Ça fait un bug assez sérieux je trouve, mais pour moi c'est fixé je pense. Si d'autres peuvent confirmer...

 

A+

François

Link to comment
Share on other sites

Je suis surpris que l'installation par défaut fonctionne pour certains. J'ai testé cette installation de la v.1.5.0.17 avec le thème par défaut sur 3 serveurs et l'ajout au panier depuis une liste de produits n'a marché avec aucun navigateur sur Mac ; je n'ai pas encore testé sur PC.

 

Tant mieux pour ceux qui n'ont pas le problème mais méfiance tout de même ; j'aurais tendance à vous recommander de pousser les tests, en particulier si vous changez de serveur ou si une mise à jour est faite sur celui-ci (est-ce lié à Apache ?).

Link to comment
Share on other sites

Et si on poussait justement nos tests... Est-ce qu'il est éventuellement possible de tester votre site sur un PC (en ayant un sous la main), avec la configuration a true par défaut et je vous dis quoi ?

 

(Il m'est plus simple de tester votre site que de tester le mien sur un Mac, ;))

 

NB: On peut voir cela en MP, au besoin !

Link to comment
Share on other sites

Et bien voilà, je viens de tester le paramètre à "true" et ça ne fonctionne pas sur le PC (tests : FFox, IE, Chrome, Opera... bon, j'ai fait l'impasse sur Safari ;) ). Paramètre sur "false", tout est ok.

Serveurs utilisés : AlwaysData et OVH.

 

À mon avis si ça ne marche pas sur une configuration ça ne passe sur aucune car ça doit coincer au niveau HTTP / réglages des serveurs.

Quoiqu'il en soit, il me semble anormal de sortir et envoyer une url codée plutôt que des caractères bruts (&, =) dans le QUERY_STRING.

Mais je ne suis pas du tout expert sur le sujet non plus.

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

je relance ce post car j'ai moi aussi le même problème, à quelques variantes près :

quand je suis sur une fiche produit, si je clique sur "ajouter au panier", il me rajoute bien le produit dans le panier et me redirige directement sur la page "panier" : ce qui est un gros problème évidement !

Mais quand je suis sur une catégorie (donc liste de produit), là c'est encore pire : il me redirige aussi sur la page "panier" mais en plus il ne rajoute même pas le produit dans le panier !!!!

Je suis avec la version v1.5.0.17, et je suis en mutualisé chez OVH (http://pro.ovh.net/infos/test.php)

Je précise aussi que mon module Panier est bien activé, at que dans la config de celui-ci le paramètre "Panier Ajax" est bien activé.

(Sinon, tout ce que j'ai fait comme modif' c'est dupliquer le thème par défaut pour créer un nouveau thème. Je ne sais pas par contre si ce problème était déjà là avant de changer de thème car je n'avais pas testé ça. Mais même si je repasse sur le thème par défaut maintenant, ça ne marche toujours pas...)

Merci

Edited by Fily123 (see edit history)
Link to comment
Share on other sites

Bonjour,

 

...il me rajoute bien le produit dans le panier et me redirige directement sur la page "panier" : ce qui est un gros problème évidement !

 

Ce sera vite réglé, dans le BO, Préférences > Produits, et régler l'option "Redirection..." sur "Page précédente".

 

Je précise aussi que mon module Panier est bien activé, at que dans la config de celui-ci le paramètre "Panier Ajax" est bien activé.

(Sinon, tout ce que j'ai fait comme modif' c'est dupliquer le thème par défaut pour créer un nouveau thème. Je ne sais pas par contre si ce problème était déjà là avant de changer de thème car je n'avais pas testé ça. Mais même si je repasse sur le thème par défaut maintenant, ça ne marche toujours pas...)

 

J'ai fait exactement le même constat.

Et pour corser le tout, la solution que je donnais plus haut (passer le dernier paramètre du lien à "false") rend le code invalide W3C, qui n'accepte pas les entités brutes dans le code (on devrait avoir "&" au lieu de "&" etc.).

 

Bref, pour moi c'est un sérieux bug !

 

Je m'en sors en transformant le lien href en lien JavaScript, c'est tout ce que j'ai trouvé :

href="[code smarty}" ==> href="javascript:'{code smarty}';"

 

Comme ça, tout est ok mais c'est du bricolage, pas très propre comme solution.

Link to comment
Share on other sites

Pour ma part mon site fonctionne "presque" bien, c'est à dire que sur certains ordinateurs sur lesquels j'ai fait des tests, le problème revient. J'ai compris que ça vient du réglages des "cookies" du navigateur (ici Firefox). Du coup, il suffit que j'efface les cookies et ça marche... Mais bon, ce n'est pas vraiment une solution.

Link to comment
Share on other sites

Ce sera vite réglé, dans le BO, Préférences > Produits, et régler l'option "Redirection..." sur "Page précédente".

Merci beaucoup fbarret ;)

Maintenant, quand je suis sur une fiche produit, il me rajoute le produit dans le panier sans me rediriger vers la page "panier" (je précise que ça rame grave quand il rajoute le produit ! )

De plus, le symbole "poubelle" n’apparaît toujours pas au niveau du bloc ¨Panier, et lorsque je suis sur une catégorie, j'ai beau cliquer sur "Ajouter au panier" ça ne fait strictement rien...

Donc il y a un léger mieux, mais c'est clair que c'est loin de régler le problème...

Je vois que tu as aussi pas mal de souci (comme ideo77 aussi), même si tu sembles avoir trouvé une solution dans le code ; mais comme tu dis c'est une "bidouille", donc pas l'idéal...

Est-ce qu'un PrestaTeam pourrait se pencher la dessus car c'est quand même un gros problème pour une boutique marchande d'avoir un bug aussi important au niveau du Panier, c'est le moins qu'on puisse dire :angry:

Ça semble être un problème d'Ajax (non ?) mais il est pourtant bien activé dans le BO de ma boutique...

(juste pour info, vous êtes hébergé chez qui fbarret et ideo77 ? )

Link to comment
Share on other sites

Je développe en local, puis je teste en ligne chez Alwaysdata, et le site final sera en mutualisé chez OVH.

 

[edit]

Pas chez OVH finalement, beaucoup trop poussif en mutualisé et service MySQL quasi-inexploitable - site final chez Alwaysdata, excellent hébergeur.

[/edit]

 

A+

Edited by fbarret (see edit history)
Link to comment
Share on other sites

Ok, merci fbarret. Donc ça vient pas de l'hébergement, mais bien de cette release 1.5.xx

On est plusieurs dans ce cas là :

http://www.prestasho...-in-version-15/

et ce serait bien d'avoir une version officielle de le PrestaTeam là dessus... <_<

(sinon, j'ai testé ton code fbarret :

{$link->getPageLink('cart',false, NULL, "add& [...] ={$static_token}", true)} (pas bon)
{$link->getPageLink('cart',false, NULL, "add& [...] ={$static_token}", false)} (OK)

et c'est ok pour moi aussi : je peux rajouter des produits depuis les catégories.

Maintenant, c'est toujours la m***e car les "évènements" Ajax sont toujours aux abonnés absents !!!)

 

(Dans le Post ci-dessus sur le forum Anglais, on lui demande le thème sur lequel il est. Est-ce que la création d'un second thème pourrait être la cause de ce bug ? Pour ma part, j'ai créé un second thème depuis BO->Préférences->Thèmes->Créer, en utilisant le thème Default pour la création du nouveau thème. Avez-vous effectué la même chose aussi ?)

Edited by Fily123 (see edit history)
Link to comment
Share on other sites

Bon, vu qu'il ne semble pas il y avoir de solutions "officielles", et donc sans bidouille. Et qu'apparemment, cette version 1.5 est pas mal buggée :

- le bug celui dont on parle ici

- le BO très lent (je confirme aussi) dès qu'on est sur des mutualisés

- comportements aléatoires FO et BO

- etc...

(http://www.prestasho...-in-version-15/

http://www.prestasho...une-version-15/

...)

Je pense qu'il n'y a pas d'autres choix que de réinstaller toute ma boutique sous la v1.4.9, visiblement bcp plus stable.

Après, c'est vrai que ça inclut de ressaisir toute la boutique (CMS, fiches produits,etc...) : en gros, cette version 1.5.xx c'est surtout "Comment dupliquer les heures de travail pour un même résultat !"

Et encore, moi je viens tout juste de monter ma boutique donc ma BdD niveau Clients, Commandes, etc...est encore vide ; mais j'imagine même pas pour ceux qui ont fait une MAJ de leur boutique Live de 1.4.9 vers 1.5xx !!! Le pétage de plomb assuré !

Plutôt que d’espérer une hypothétique amélioration de ma boutique dans l'avenir (surtout sur une durée hypothétique là aussi), je préfère commencer directement sur une version stable, quitte à rater quelques "améliorations" des versions 1.5xx voire 1.6 à venir...

Donc, c'est parti : je recommence à zéro !

Bon courage à ceux qui doivent tout recommencer aussi :angry: (et à ceux qui persistent sur la 1.5.xx aussi d'ailleurs...)

Edited by Fily123 (see edit history)
Link to comment
Share on other sites

Je reviens sur ce fil, les pistes et (mauvaises) solutions proposées.

 

1 - La solution de passer le dernier paramètre du lien à "false" est une mauvaise solution : le lien fonctionne et les articles sont ajoutés au panier mais le code de la page est invalide du point de vue W3C

 

2 - Transformer le lien en code JavaScript (href="javascript:...") n'est pas une bonne solution : résultat très aléatoire et cette façon d'utiliser JavaScript est à proscrire (protocole non officiel, risques de bug... siteduzero : bonnes pratiques)

 

3 - Piste des cookies : intéressant, lorsque j'efface mes cookies, le lien fonctionne normalement mais forcément c'est provisoire ; plus tard, lorsque de nouveaux cookies sont créés ça ne marche à nouveau plus - je pourrais me résoudre à mettre un écriteau sur la boutique disant « Cher visiteur, si vous souhaitez acheter un article veuillez au préalable effacer les cookies de votre navigateur et renouveler l'opération avant chaque ajout d'un article au panier. »... mmmh, j'hésite ;-)

 

Dernièrement, je me suis dit qu'en passant de la version 1.5.0.17 à la 1.5.2, je pourrais retrouver un codage fonctionnel et propre - erreur - le thème par défaut (v. 1.5.2) n'a fait qu'adopter la mauvaise solution décrite en (1), et re-passer le paramètre à "true" fait ré-apparaître le bug !

Autrement dit ce n'est pas un bug qui a été résolu mais une rustine de qualité douteuse qui a été posée, et le résultat est qu'on se retrouve dans les pages de listes de produits avec plusieurs erreurs de code pour chaque article et ça fait un paquet de lignes en rouge sur le validateur W3C, Je trouve ça quand même un peu inquiétant pour un moteur de boutique qui comptabilise plus de 2 millions de téléchargements. Ça fait aussi un peu mauvais genre quand on livre un site invalide à son client et qu'on est sans recours pour assurer la correction des erreurs.

On va me dire que l'essentiel c'est que ça marche... peut-être mais justement si le W3C ne valide pas on ne peut pas être sûr que ça marchera longtemps et il sera impossible d'incriminer un supposé mauvais navigateur.

 

Gloire au futur cador qui saura démêler tout ça ! ;)

 

A+

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Toujours pas de solutions propres?

 

En ce qui me concerne, J'ai cessé de chercher.

Mon problème de format d'url était lié, je crois, à un défaut d'ancrage du module panier sur le "hook" header...

Actuellement ça marche, avec un format d'url valide (et mon site est totalement conforme W3C, ouf :)), mais si je veux diriger directement sur le panier à la suite d'un clic sur le bouton Achat, c'est impossible (désactiver le panier Ajax est sans effet).

 

À mon avis, la conception du module Panier est à revoir totalement - je dirais même que tout Prestashop est quand même une sacrée usine à gaz et je n'ai donc aucune envie de chercher plus loin. Je ne suis de toute façon pas assez compétent pour creuser ça de façon suffisamment rapide et efficace. Au final cette histoire me laisse un petit arrière-goût de bâclé et le sentiment d'un système moyennement rassurant…

Cela dit si un développeur de Prestashop veut se pencher sérieusement sur le problème je suis partant pour des tests et contribuer comme je peux.

 

A+

François

  • Like 1
Link to comment
Share on other sites

chez moi ça ne marche qu'en ajax...

 

en fait, j'ai un version propre de la 1.5.2, ça fonctionne très bien.

j'ai une autre version, mise à jour de la 1.4.1 à 1.5.2 et la ça ne fonctionne qu'en ajax. allez savoir pourquoi... j'ai des bugs de partout ça merde c'est relou..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...