16 Oct 2015
Problème navigation à facette prestashop

Bug liste déroulante navigation à facettes Prestashop

Cet article ne concerne peut-être pas toutes les versions de Prestashop et pareil pour le module navigation à facettes. J’ai rencontré un problème sur les listes déroulantes de ce module pendant une intégration. Il était impossible de choisir une option !

Chargement de la recherche en cliquant sur un filtre Prestashop

Sur les déclinaisons qui étaient sous forme de liste déroulante, lorsque je cliquais dessus, il était impossible de faire son choix dans cette même liste. Dès que la liste s’ouvrait, la recherche instanée s’activait sans même avoir sélectionné une déclinaison.

Le temps d’affichage des options de la liste déroulante était très très faible et donc son utilisation impossible.

Après un bon moment de recherche, j’ai trouvé un article (un peu perdu?) sur le forum Prestashop.

Je précise que cela a fonctionné sur une version de PrestaShop 1.6.0.11.

C’est une modification à apporter dans le fichiers: votrethème/js/modules/blocklayered/blocklayered.js

Il y a d’autres possibilités comme modifier la fonction ajax sur option au lieu de select mais cela ne marche pas sous Chrome :$

Alors il faut modifier la ligne (ligne 45 sous PS 1.6.0.11):

$(document).on('click', '#layered_form .select, #layered_form input[type=checkbox], #layered_form input[type=radio]', function(e) {

reloadContent(true);
});

par

$(document.body).on('change', '#layered_form .select, #layered_form input[type=checkbox], #layered_form input[type=radio]', function(e) {

reloadContent(true);
});

Voilà !

Lors d’une intégration, je me suis rendu compte que la glissière de prix dans la navigation à facettes Prestashop, affichait uniquement les prix en HT. Cela n’est donc pas compréhensible pour le client, une glissière de prix qui affiche un prix minimum qui n’existe pas sur le site. Voici un petit tutoriel pour résoudre ce problème.

Détail du problème des prix sur la navigation à facettes

Version de Prestashop : 1.6.1.11

L’option en back-office qui permet d’afficher les prix en TTC et non en HT ne fonctionne pas :
probleme-prix-ht-module-navigation-a-facettes-prestashop

Si votre produit le moins cher est à 12€ TTC, dans la recherche prix, il y aura un montant de 10€ (prix HT).

Afficher le prix TTC

Il faut ouvrir le fichier PHP du module, allez ici : /modules/blocklayered/blocklayered.php et on va modifier la fonction indexProductPrices.
Remplacez cela :

foreach ($currency_list as $currency)
$values[] = '('.(int)$id_product.',
'.(int)$currency['id_currency'].',
'.$id_shop.',
'.(int)$minPrice = (int)$min_price[$currency['id_currency']].',
'.(int)Tools::ps_round($max_price[$currency['id_currency']] * (100 + $max_tax_rate) / 100, 0).')';

par

if( Configuration::get('PS_LAYERED_FILTER_PRICE_USETAX') )
$minPrice = (int)Tools::ps_round($max_price[$currency['id_currency']] * (100 + $max_tax_rate) / 100, 0);
else
$minPrice = (int)$min_price[$currency['id_currency']] ;
foreach ($currency_list as $currency)
$values[] = '('.(int)$id_product.',
'.(int)$currency['id_currency'].',
'.$id_shop.',
'.(int)$minPrice.',
'.(int)Tools::ps_round($max_price[$currency['id_currency']] * (100 + $max_tax_rate) / 100, 0).')';

Si cela fonctionne pas, il faut vider le cache de votre site 🙂
Cela m’a beaucoup aidé sur une importante intégration Prestashop, je me suis rendu compte que ce “bug” est présent sur pas mal de version 1.6.

Source (après de longues recherches !!!) -> Forum Prestashop

772424 un hébergement Prestashop

Un bug sur Prestashop que nous n’arrivez pas à résoudre ? Contactez-moi !

– Connexion à votre boutique et votre serveur
– Investigation sur votre problématique
– Rapport par e-mail de l’intervention

Vous pouvez commander un ticket d’intervention directement sur mon e-shop.