Archives du blog

La navigation à facette – Affiner sa recherche grâce à Prestashop 1.4

La Navigation à Facette de Prestashop 1.4

La Navigation à Facette de Prestashop 1.4

La Navigation à facette proposée de base en module sous Prestashop 1.4 , permet d’effectuer des recherche dans la base d’articles porposée par l’e-commerce.

Grâce à cette navigation à facette, on peut affiner cette recherche grâce aux filtres proposés (ces filtres sont les attributs des articles vendus, en stocks ou non, disponibles ou non).

Toutefois, le module de recherche qu’est la navigation à facette, n’est actuellement proposé que sous forme de Beta. C’est à dire que malgré sa publication sur la version 1.4 de Prestashop, il subsiste quelques bugs qui n’ont pas encore été corrigés. Alors prudence…

Nous avons décelé un bug dans le fonctionnement de la navigation à facette. Corrigez ce bug dès maintenant grâce à notre topic.

Prestashop : accès à la base de données via l’administration

Pour ma part, je suis chez OVH, avec le Prestashop v.1.4.1 qui est inclus dans l’offre PRO OVH.
Ce n’est pas la dernière version de Prestashop mais bon… (la dernière version étant Prestashop 1.4.3 à l’heure de ce post)

Concernant la base de données je n’y ai pas accès et n’ai donc pas pu choisir le préfixe du nom des tables. Cependant, via le Back-Office de Prestashop 1.4, on peut retrouver certaines informations qui peuvent s’avérer très utilses.

Pour cela, aller dans votre espace d’administration Prestashop, puis dans l’onglet Préférences puis cliquer sur l’onglet de sous-rubrique Base de Données.

Ainsi, vous avez accès :

  • au nom du serveur de base de données (en local localhost ou en production)
  • au nom de la base de données que vous utilisez pour la e-boutique
  • au préfixe des noms de tables de la base de données (souvent ps_ , mais chez OVH, de base le préfixe est pss_ )
  • au nom d’utilisateur ayant accès à la base de données
  • et un champ permettant de changer le mot de passe de l’utilisateur de la base de données (laisser vide si vous ne souhaitez pas le modifier).
  • enfin, la liste des tables présentes dans la base de données en question (leur nom commençant pas le fameux préfixe).
Le fait que le préfixe ne soit pas ps_ de base (comme chez OVH avec son hébergement PRO), peut parfois poser problème. Voir le problème de chargement du résultat de la navigation à facette sous Prestashop 1.4.

Prestashop 1.4 : Problème avec la navigation à facette

Depuis quelques temps maintenant, je travail (entre autre) sur Prestashop, le fameux e-commerce Français, concurrent de Magento, et qui fait beaucoup parler de lui !
Actuellement en version 1.4, beaucoup plus améliorée par rapport à la version 1.3, mais néanmoins bugguée sur certaines fonctionnalités telle que la navigation à facette qui était tant attendue !

Qu’est-ce que la navigation à facette ? Il s’agit en quelque sorte d’une interface permettant d’affiner notre recherche sur des produits en fonction de critères propres à chaque produit. Voir la navigation à facette pour plus de détail.

J’ai eu l’occasion de découvrir un bug plutôt bloquant :
Lorsque l’on clique sur l’un des critères, on a une image qui montre que la page charge les données en rapport avec le critère sélectionné.
Le problème est que la moulinette (le chargement) ne s’arrête pas, et on n’obtient pas le résultat escompté.

Il s’agit de problèmes tout bête dans le code, mais il faut le savoir :

1. Ouvrir le fichier blocklayered.php (présent dans le répertoire /www/modules/blocklayered/).

A la ligne 263 il faut remplacer “new category” par “new Category” (il manque la majuscule).

Mauvais code :

$parent = new category($id_parent);

Bon code :

$parent = new Category($id_parent);

2. Et aussi remplacer les “ps_” par le préfixe de vos tables ou par ‘._DB_PREFIX_.’ comme à la ligne 266.

Mauvais code :

$queryFilters .= ' AND p.id_product IN ( SELECT pa.`id_product`
	FROM `ps_product_attribute_combination` pac
	LEFT JOIN `ps_product_attribute` pa
ON (pa.`id_product_attribute` = pac.`id_product_attribute`) WHERE ';

Bon code :

$queryFilters .= ' AND p.id_product IN ( SELECT pa.`id_product`
	FROM `'._DB_PREFIX_.'product_attribute_combination` pac
	LEFT JOIN `ps_product_attribute` pa
	ON (pa.`id_product_attribute` = pac.`id_product_attribute`) WHERE ';

Comment accéder à la base de données dans l’espace d’administration de Prestashop 1.4.1 ?