lechapelier Posted May 17, 2013 Share Posted May 17, 2013 (edited) Edit: problème cité dans la forge, surement résolu lors d'un prochaine maj ... donc topic clos pas de solution à ce jour. Bonjour, Il y a quelques chose qui me paraît illogique dans la navigation à facettes avec le critère de prix, je m'explique. 1er Cas: Vous avez un produit comme une clé usb qui a 3 capacités 16 / 32 / 64go par exemple. Il y a donc 3 prix pour le même produit disons 20 / 50 / 100€. Lorsque vous regardez la proposition de tri par critères de prix de la navigation à facette, il n'y a que le montant du produit configuré par défaut qui est à 20€ dans mon exemple qui sera pris en compte par le critère de prix et pas les versions à 50 et 100€ dans le comparateur, ce n'est pas normal. Le comparateur n'affichera donc q'une fourchette de 0 à 20€ vu que les autres produits ne sont pas pris en compte. On peut en déduire qu'on ne peut pas utiliser le critère de prix pour les annonces multiversion ce qui oblige de faire une annonce pour chaque version produit et donc un magnifique duplicate content. Ce critère est donc inutilisable alors que la navigation à facette est faite pour les boutique ayant beaucoup de produits et en général des déclinaisons. Il faut que le critère de tri par prix prenne en compte les déclinaisons produits et pas que le produit qui s'affiche par défaut. Il faudrait afficher "à partir de 20€" à "50€" dans les mignature qui s'affichent lors de la recherche par critère qui me semble le plus simple et logique. Le client est donc informé qu'il y a plusieurs déclinaisons du produit avec un prix mini et max sans devoir cliquer sur l'annonce pour avoir l'information. La fiche de vente au final resterait la même. 2eme cas: Prenons le critères de taille S / M / L. soit 10 / 30 / 50€ 1 prix différent par taille, si on sélectionne le critère dans la navig à facette taille M, eh bien c'est encore le produit par défaut configuré (en général le S) qui va apparaître avec le prix du S et non du M. Ça n'est pas normal non plus et j'imagine le client qui clique, super affiché 10€ sur la mignature, une fois arrivé sur l'annonce sa taille coûte 30€, hop salut abandon direct car le client crois qu'on a tenté de le... enfin vous voyez... Le client choisi M c'est donc la photo et le prix du M qui doit s'afficher pas autre chose. J'aimerais avoir vos avis sur ce détail qui mérite qu'on s'y penche sérieusement car le prix est quand même un des principaux levier et critère de tri sur les sites ainsi que les taille mais ça peut s'appliquer à tous les autres critères. Comme d'habitude mode pavé mais j'ai pas réussit à faire plus court. merci pour votre participation. Edited June 16, 2013 by lechapelier (see edit history) Link to comment Share on other sites More sharing options...
manaone Posted October 31, 2013 Share Posted October 31, 2013 Bonjour J'ai le même souci, est ce que tu peux partager ton expérience Comment as tu résolut ce proclème ? Merci de ta réponse Link to comment Share on other sites More sharing options...
Oron Posted November 2, 2013 Share Posted November 2, 2013 Bonjour Déplacement du topic dans le forum Modules gratuit vu que la navigation par facette fait partie des modules de bases. Link to comment Share on other sites More sharing options...
thoreking Posted March 4, 2014 Share Posted March 4, 2014 Bonjour, je relance car l'installation du module navigation a facette modifie de facon erronnee le prix d'un produit ayant des declinaisons. C'est toujours le prix le plus eleve qui est affiche sur le produit et non pas celui de la declinaison par defaut. C'est un bug majeur car le prix du filtre et celui affiche sur le produit est different et le client n'y comprend plus rien. Si il recherche un produit entre 10 et 20 euros et qu'un produit a une declinaison par defaut a 20 euros et une a 40 euros, le produit apparaitra dans la liste mais le prix affiche sur le produit sera de 40 euros! C'est grave pour un module de base.. Merci de votre aide. Link to comment Share on other sites More sharing options...
thoreking Posted March 5, 2014 Share Posted March 5, 2014 J'ai trouve en cherchant un peu dans une query du blocklayered.php un MAX pour les id des declinaison ?! On veut pas l'id MAX on veut l'id de la declinaison par defaut... en changeant en ligne 1972 le MAX par pa.id_product_attribute id_product_attribute, et plus loin AND pa.default_on = 1 La on a bien la declinaison par defaut et les prix sont bons... 1 Link to comment Share on other sites More sharing options...
pierrick Posted March 22, 2014 Share Posted March 22, 2014 Bonjour, Je lis résolu et je me dis chouette sauf que mes yeux ne voient pas la réponse!!! Mon besoin, que le module à facette affiche le bon résultat de la déclinaison et non systématiquement la déclinaison par défaut. Merci par avance pour votre aide. Pierrick Link to comment Share on other sites More sharing options...
sellas Posted April 3, 2014 Share Posted April 3, 2014 (edited) J'ai trouve en cherchant un peu dans une query du blocklayered.php un MAX pour les id des declinaison ?! On veut pas l'id MAX on veut l'id de la declinaison par defaut... en changeant en ligne 1972 le MAX par pa.id_product_attribute id_product_attribute, et plus loin AND pa.default_on = 1 La on a bien la declinaison par defaut et les prix sont bons... Qu'as-tu changé exactement dans cette requête ? Je n'arrive pas à effectuer tes changements, tes explications sont un peu vague... l.1981 : MAX(product_attribute_shop.id_product_attribute) remplacé par pa.id_product_attribute. C'est bien ça ? Et le "AND pa.default_on = 1" on en fait quoi ? Edited April 3, 2014 by sellas (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted April 3, 2014 Share Posted April 3, 2014 Salut,Pour afficher le prix de la déclinaison par défaut :Vers la ligne 1991 (PS 1.5.6.2) du fichier blocklayered.php du module, ajouter la clause suivante sur pa.default_on : AND c.active = 1 AND p.id_product IN ('.implode(',', $product_id_list).') AND (pa.default_on = 1 OR ISNULL(pa.default_on)) GROUP BY product_shop.id_product Pas besoin de toucher à l'id max, avec la modif, le max n'a plus d'incidence. Et pas oublier le second test ISNULL sinon ça va buger sur les produits sans déclinaisons Link to comment Share on other sites More sharing options...
sellas Posted April 4, 2014 Share Posted April 4, 2014 Salut, Pour afficher le prix de la déclinaison par défaut : Vers la ligne 1991 (PS 1.5.6.2) du fichier blocklayered.php du module, ajouter la clause suivante sur pa.default_on : AND c.active = 1 AND p.id_product IN ('.implode(',', $product_id_list).') AND (pa.default_on = 1 OR ISNULL(pa.default_on)) GROUP BY product_shop.id_product Pas besoin de toucher à l'id max, avec la modif, le max n'a plus d'incidence. Et pas oublier le second test ISNULL sinon ça va buger sur les produits sans déclinaisons Merci beaucoup, cela fonctionne en effet ! Link to comment Share on other sites More sharing options...
hbboy Posted April 7, 2014 Share Posted April 7, 2014 Up + Quelqu'un a-t-il pu mettre en place le système permettant d'afficher l'image et le prix des produits dans le résultat de recherche après sélection critère dans navigation à facette ? Par exemple si je sélectionne la couleur bleu alors tous mes produits ayant ce critère affiche l'image du produit ayant la declinaison bleu + le prix qui lui est alloué si celui-ci est différent de mon produit par défaut. J'espère avoir été assez clair dans mon explication. Merci Link to comment Share on other sites More sharing options...
graandayzar Posted March 13, 2015 Share Posted March 13, 2015 (edited) Bonjour, Je ne connais pas Prestashop je déconseille même de faire ce qui suit mais bon parfois on n'a pas trop le choix Pour avoir le prix qui correspond au critère choisi dans la blocklayred, faut ajouter qqs lignes toujours dans la meme requete vers la ligne 1990 du fichier. les lignes concernées sont: 1 à 8 - 25 - 39 $res = ''; $selectedF =$this->getSelectedFilters(); if (isset($selectedF['id_attribute_group'])) { $filter_value = $selectedF['id_attribute_group']; $myKeys = array_keys($filter_value); $res = $myKeys[0]; } if ($this->nbr_products == 0) $this->products = array(); else { $n = (int)Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE')); $nb_day_new_product = (Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20); $this->products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT p.*, '.($alias_where == 'p' ? '' : 'product_shop.*,' ).' '.$alias_where.'.id_category_default, pl.*, MAX(image_shop.`id_image`) id_image, il.legend, m.name manufacturer_name,' . ($res != '' ?'MAX(pac.id_product_attribute) id_product_attribute' : 'MAX(product_attribute_shop.id_product_attribute) id_product_attribute'). ', DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(int)$nb_day_new_product.' DAY)) > 0 AS new, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.Shop::addSqlAssociation('product', 'p').' '.Product::sqlStock('p', null, false, Context::getContext()->shop).' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product'.Shop::addSqlRestrictionOnLang('pl').' AND pl.id_lang = '.(int)$cookie->id_lang.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$cookie->id_lang.') LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (p.id_product = pa.id_product)' . ($res != '' ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac on (pa.id_product_attribute = pac.id_product_attribute) AND pac.id_attribute = ' . $res : $res) . Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.`default_on` = 1').' WHERE '.$alias_where.'.`active` = 1 AND '.$alias_where.'.`visibility` IN ("both", "catalog") AND '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).' AND c.active = 1 AND p.id_product IN ('.implode(',', $product_id_list).') GROUP BY product_shop.id_product ORDER BY '.Tools::getProductsOrder('by', Tools::getValue('orderby'), true).' '.Tools::getProductsOrder('way', Tools::getValue('orderway')). ' LIMIT '.(((int)$this->page - 1) * $n.','.$n)); } Si lorsqu'on clique sur voir le produit, ça nous affiche le produit par défaut et non la declinaison, faut ajouter la ligne suivante dans blocklayered.js à la ligne 637 //'ul#product_list li.ajax_block_product div.right_block a.button,'+ function updateProductUrl() { // Adding the filters to URL product if (typeof(param_product_url) != 'undefined') { $.each($('ul#product_list li.ajax_block_product .product_img_link,'+ 'ul#product_list li.ajax_block_product h3 a,'+ 'ul#product_list li.ajax_block_product .product_desc a,'+ 'ul#product_list li.ajax_block_product div.right_block a.button,'+ 'ul#product_list li.ajax_block_product .lnk_view'), function() { $(this).attr('href', $(this).attr('href') + param_product_url); }); } } J’espère que ça va aider Edited March 13, 2015 by graandayzar (see edit history) Link to comment Share on other sites More sharing options...
froggyfred Posted July 20, 2015 Share Posted July 20, 2015 un petit point pour la version 1.6.0.9. rien ne fonctionne parmis les propositions quelqu'un peut m'aider ? svp Link to comment Share on other sites More sharing options...
silocan Posted November 16, 2020 Share Posted November 16, 2020 Bonjour à tous... Un up sur ce sujet car j'ai les mêmes problématique sur la version 1.7.6.5 Merci d'avance pour votre aide ! Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2020 Share Posted November 16, 2020 Merci de créer un nouveau sujet en donnant un maximum de détails, ce sujet date de mai 2013 Link to comment Share on other sites More sharing options...
Recommended Posts