onubu.com Posted February 29, 2012 Share Posted February 29, 2012 Bonjour à tous, Les produits cochés une fois dans le comparateur le reste toujours... Il faut donc décocher les produits sélectionnés pour pouvoir lancer une nouvelle comparaison. Pire, si j'ai 3 produits cochés dans 3 différentes catégories, il compare les produits des différentes catégories!!! Par exemple il compare une tondeuse avec un lecteur MP3!!!! Ma question est: - comment faire pour que le comparateur se réinitialise après chaque utilisation? - comment éviter la comparaison entre différentes catégories? Merci d'avance de votre aide. Bonne journée p.s.: j'utilise la version 1.4.7, en local (j'ai activé "forcer compilation" et désactivé "cache") Link to comment Share on other sites More sharing options...
onubu.com Posted March 2, 2012 Author Share Posted March 2, 2012 UP! Link to comment Share on other sites More sharing options...
onubu.com Posted March 7, 2012 Author Share Posted March 7, 2012 Personne pour m'aider? UP Link to comment Share on other sites More sharing options...
Carl Favre Posted March 7, 2012 Share Posted March 7, 2012 Bonjour Franck, C'est le fonctionnement "normal" du comparatif. Je déplace ton sujet dans la partie développement, tu auras plus de chance d'obtenir une réponse. Link to comment Share on other sites More sharing options...
Junfan Posted March 10, 2012 Share Posted March 10, 2012 Bonjour, Désolé de remonter ce sujet, mais j'ai le même problème. Car oui, pour moi c'est un problème. Si on quitte son navigateur et qu'on revient, le comparateur garde les précédents produits comparés. Résultat, un internaute qui a fait précédemment une comparaison ne peut plus en faire et a certainement oublié qu'il en avait fait une précédemment et ne pense de toute façon pas à supprimer les produits du comparateur... Cela devrait être automatique, comme sur de nombreux sites e-commerces connus ! C'est pour moi un problème de session ou de cookie, mais certainement pas un comportement normal. Il faudrait vraiment corriger ca, car je le répète, ce n'est pas un comportement normal... Merci Link to comment Share on other sites More sharing options...
Carl Favre Posted March 12, 2012 Share Posted March 12, 2012 Bonjour Junfan, Pour toute suggestion ou bug tu peux poster dans le bug tracker, ainsi un développeur jettera un coup d'oeil. Merci ! Link to comment Share on other sites More sharing options...
vincimusic Posted May 18, 2012 Share Posted May 18, 2012 Bonjour Je viens effectivement de goûter au problème que vous évoquez, et je n'aurais en effet jamais pû imaginer qu'après avoir quitté la connexion au site, les produits puissent rester dans le comparateur. C'est un non sens. Mais il y a un autre problème : la fonction "retirer" poubelle pour enlever un produit du comparateur ne marche pas. Dans l'attente d'une correction urgente - merci Link to comment Share on other sites More sharing options...
federico8 Posted May 24, 2012 Share Posted May 24, 2012 (edited) Moi j'ai le meme problème aussi... je voudrais savoir comment on poudrait corriger ça... Edited May 24, 2012 by federico8 (see edit history) Link to comment Share on other sites More sharing options...
spartacus Posted July 18, 2012 Share Posted July 18, 2012 (edited) Bonjour, Si vous rencontrez des problèmes avec le "retirer" du comparateur, cela vient de votre thème qui n'est plus compatible avec PS 1.4.8.2. Il vous faudra remplacer faire des modifs au niveau des tpl de votre thème. Edited July 19, 2012 by spartacus (see edit history) Link to comment Share on other sites More sharing options...
nox13000 Posted August 27, 2012 Share Posted August 27, 2012 (edited) Bonjour, j'UP ce post pour tout ceux qui ont rencontré ce problème et qui cherche encore une solution. J'ai rencontré le même problème aujourd'hui et effectivement je trouve aussi qu'il s'agit là d'une "aberration" de prestashop. Bref pour contourner ce problème, il suffit d'une petite modification dans CompareProduct.php (situé dans le dossier Classe à la racine de votre site). On peut y voir qu'en fait le comparateur charge dans la base de donnée SQL les choix effectués par les visiteurs en leur attribuant un ID unique (ce qui est bien dégeulasse soi-dit en passant, imaginez avec un traffic de 1000 visiteurs par jour si chacun charge 3 produits dans le comparateur -> 3000 entrées dans la bdd juste pour ça alors qu'un petit script js aurait très bien gerer ca "client-side" enfin bon ...) Une fois dans le fichier CompareProduct.php cherchez la fonction "getCompareProducts" qui récupere les produits en bdd pour un id visiteur donné. Il suffit juste d'ajouter un bout de code tiré de la fonction removeCompareProduct qui supprimera les choix de l'utilisateur en bdd juste après les avoir récupérés. En gros la fonction getCompareProduct est appelé quand un client clique sur "comparer", le but est donc de récuperer les produits que la personne veut comparer afin de les afficher correctement, mais égalemment de les supprimer de la base de donnée avant de les retourner, ainsi ils ne seront plus en mémoire lors d'une future comparaison Voici le code à recuperer de la fonction removeCompareProduct : Db::getInstance()->Execute(' DELETE cp FROM `'._DB_PREFIX_.'compare_product` cp, `'._DB_PREFIX_.'compare` c WHERE cp.`id_compare`=c.`id_compare` AND cp.`id_product` = '.(int)($id_product).' AND c.`id_compare` = '.(int)$id_compare); On enleve la ligne AND cp.`id_product` = '.(int)($id_product).' puisqu'on ne veut pas supprimer UN mais TOUT les produits stockés pour l'utilisateur en BDD, puis on rajoute ce bout de code avant le "return" de la fonction getCompareProducts Vous devriez donc vous retrouver avec une fonction getCompareProducts qui ressemble à ceci : public static function getCompareProducts($id_compare) { $results = Db::getInstance()->ExecuteS(' SELECT DISTINCT `id_product` FROM `'._DB_PREFIX_.'compare` c LEFT JOIN `'._DB_PREFIX_.'compare_product` cp ON (cp.`id_compare` = c.`id_compare`) WHERE cp.`id_compare` = '.(int)($id_compare)); $compareProducts = null; if ($results) foreach ($results as $result) $compareProducts[] = $result['id_product']; /* Supprime les choix en BDD */ Db::getInstance()->Execute(' DELETE cp FROM `'._DB_PREFIX_.'compare_product` cp, `'._DB_PREFIX_.'compare` c WHERE cp.`id_compare`=c.`id_compare` AND c.`id_compare` = '.(int)$id_compare); return $compareProducts; } Voilà, j'espère avoir pu en aider quelques uns avec ce bout de code, par contre pour ce qui est de la comparaison inter-categorie je ne m'y suis pas penché car le site sur lequel je bosse est axé sur un seul type de produit décliné en plusieurs catégories je ne suis donc pas confronté aux problèmes des caracteristiques divergeantes, je vous conseille tout de même de fouiller dans ce fichier php, une petite variable rajoutée en parametre avec l'id de la categorie et quelques if dans certaines fonctions feront surement l'affaire Bonne journée Edited August 27, 2012 by nox13000 (see edit history) 1 Link to comment Share on other sites More sharing options...
ckarone Posted October 12, 2012 Share Posted October 12, 2012 Bonjour, Merci à nox13000 pour cette astuce. C'est un vrai problème que je cherche à résoudre, j'ai ajouté ce code dans un override que je propose ici, à simplement ajouter dans le dossier override/classes (testé sur PS 1.7.4.3): Il reste un problème gênant, lors du retour à la page catégorie via la flèche de retour du navigateur, les checkbox restent cochées. <?php /* * 2007-2012 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2012 PrestaShop SA * @version Release: $Revision: 14001 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class CompareProduct extends CompareProductCore { /** * Get all comapare products of the customer * @param int $id_customer * @return array */ public static function getCompareProducts($id_compare) { $results = Db::getInstance()->ExecuteS(' SELECT DISTINCT `id_product` FROM `'._DB_PREFIX_.'compare` c LEFT JOIN `'._DB_PREFIX_.'compare_product` cp ON (cp.`id_compare` = c.`id_compare`) WHERE cp.`id_compare` = '.(int)($id_compare)); $compareProducts = null; if ($results) foreach ($results as $result) $compareProducts[] = $result['id_product']; /***Supprime les produits du comparateur (de la db) lorsque le visiteur affiche le comparateur**/ Db::getInstance()->Execute(' DELETE cp FROM `'._DB_PREFIX_.'compare_product` cp, `'._DB_PREFIX_.'compare` c WHERE cp.`id_compare`=c.`id_compare` AND c.`id_compare` = '.(int)$id_compare); return $compareProducts; } } Link to comment Share on other sites More sharing options...
ckarone Posted October 12, 2012 Share Posted October 12, 2012 (edited) Bon si le visiteur utilise le lien que l'on va lui proposer dans le code suivant le problème est résolu mais pas si il utilise le flêche de retour les checkbox restent cochées. Dans le tlp products-comparison.tpl ajouter le lien : <h1>{l s='Product Comparison'} <a href="{$smarty.server.HTTP_REFERER}">{l s='Back'}</a></h1> Ckarone Edited October 12, 2012 by ckarone (see edit history) Link to comment Share on other sites More sharing options...
Rimesta7 Posted October 1, 2013 Share Posted October 1, 2013 Bon si le visiteur utilise le lien que l'on va lui proposer dans le code suivant le problème est résolu mais pas si il utilise le flêche de retour les checkbox restent cochées. Dans le tlp products-comparison.tpl ajouter le lien : <h1>{l s='Product Comparison'} <a href="{$smarty.server.HTTP_REFERER}">{l s='Back'}</a></h1> Ckarone Hello, I tried this solution with my version 1.5.4.1, but it doesnt work, do you have any suggestion ?? plz Link to comment Share on other sites More sharing options...
Centaure Posted June 16, 2014 Share Posted June 16, 2014 Bonjour, Moi aussi je suis intéressé par une solution. L'idéal pour moi serait d'ajouter un bouton "Vider le comparateur" ... non ? merci par avance pour votre aide Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now