Sur une boutique e-commerce, la recherche reste un élément indispensable… d’ailleurs il m’arrive encore parfois de ne « pas » trouver ce fameux moteur de recherche (oui c’est fou). La recherche par défaut de Prestashop, peut être aussi améliorée dans certains cas…
Les acheteurs pointilleux
Dans le cas présent ce sont eux qui nous intéressent, les clients sont de plus en plus « vicieux », ils cherchent les produits de manière détaillées avec le code fournisseur ou la référence EAN, cela leur permet de trouver rapidement un produit et de comparer les prix entre marchands. Du coup il faut pouvoir proposer au client un produit si celui-ci entre le code du fournisseur par exemple… mais voyons ensemble un cas concret.
Le problème dans Prestashop
Pour un client, j’ai constaté que la recherche de Prestashop ne semblait pas s’effectuer sur la « référence interne » des déclinaisons, cela est un problème, car le client obtiendra zéro résultat en recherche alors qu’un produit décliné correspond dans la base de données. Ce cas se produit pour la référence « interne » pour les « déclinaisons »… Pour rectifier le problème il suffit de créer un fichier à l’emplacement suivant : « /override/classes/Search.php » avec le code ci-dessous (Testé sous 1.6) :
<?php class Search extends SearchCore { public static function getAttributes($db, $id_product, $id_lang) { if (!Combination::isFeatureActive()) return ''; $attributes = ''; $attributesArray = $db->executeS(' SELECT al.name, pa.reference FROM '._DB_PREFIX_.'product_attribute pa INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.id_product_attribute = pac.id_product_attribute INNER JOIN '._DB_PREFIX_.'attribute_lang al ON (pac.id_attribute = al.id_attribute AND al.id_lang = '.(int)$id_lang.') '.Shop::addSqlAssociation('product_attribute', 'pa').' WHERE pa.id_product = '.(int)$id_product); foreach ($attributesArray as $attribute) $attributes .= $attribute['name'] . ' ' . $attribute['reference']; // Webbax - recherche par référence déclinaison return $attributes; } }
Attention à ne pas oublier !
Ce qu’il faut faire ensuite c’est :
- supprimer le fichier « /cache/class_index.php » s’il existe
- lancer la ré-indexation des produits, dans le back-office si vous utilisez la navigation à facettes
Si vous relancez à présent la recherche sur la référence de la déclinaison le produit devrait apparaitre.
Une fonction encore + optimisable
Si vous avez fait du développement spécifique sur vos déclinaisons ou que vous désirez ajouter d’autres valeurs sur la recherche de produits, il suffit d’ajouter votre champ dans la recherche. On pourrait par exemple imaginer faire la même chose avec le code EAN13 avec une syntaxe de ce style :
foreach($attributesArray as $attribute){ $attributes .= $attribute['name'] . ' ' . $attribute['reference']; // Webbax - recherche par référence déclinaison $attributes .= $attribute['ean13']; // ajout la recherche sur l'ean }
Faut-il faciliter la vie à l’acheteur ?
La grande question c’est faut-il permettre la recherche par code fournisseur ou fabriquant ? En fait tout dépend de chaque marchand… bien souvent celui-ci ne veut pas que le client puisse aller comparer chez la concurrence. A mon avis, il s’agit d’une mauvaise stratégie, le monde du web est très ouvert… vous avez le droit de conserver cette information de manière confidentielle, mais bien souvent le client ira chercher ailleurs… sur du Google Shopping ou des comparateurs de prix…
Bilan
Personnellement je fais ce que me demande le marchand, mais il ne faut pas rêver les clients vont loin… certains n’hésitent pas à contacter le fournisseur même à l’étranger pour éviter de passer via un intermédiaire lors d’un achat. La transparence sur les fournisseurs présente à mon sens peu de risques, car si ceux-ci sont véritablement sérieux, un cartel des prix est appliqué et la vente directe (fournisseur – client) non appliquée.
On peut aussi essayer http://addons.prestashop.com/fr/recherche-et-filtres-modules-prestashop/18732-prestasphinx-connecteur-moteur-de-recherche-sphinx.html
Il serait intéressant de faire une comparaison entre les deux pour vois si un réel gain est proposé.
Merci d’avoir partagé ce lien.
J’ai essayé la manip, elle ne fonctionne pas…
Si c’est bon, c’était sur un produit en particulier qui avait le pb… Merci beaucoup !
Hello,
super l’astuce 😉 , serait-il également possible de rajouter une caractéristique à la recherche ? comme la Taille ? si oui comment faire ?
Merci d’avance,
Bonjour,
Pour cela activez plutôt le module « navigation à facettes » qui offre la possibilité de filtrer sur les éléments.
https://www.webbax.ch/2016/07/18/prestashop-de-a-a-z-module-navigation-a-facettes-ep-13/
Merci pour votre visite !
Bonjour et merci.
Lorsque e recherche avec un SKU ou EAN j’ai bien dans les resultat instantané le produit qui apparait. Par contre au clic je vais sur la déclinaison de base. Est-il possible d’aller directement sur la bonne déclinaison ?
Merci d’avance
Bonjour,
A ma connaissance, le lien renvoie toujours sur le produit principal, il n’y a pas de possibilité d’avoir un lien direct sur la variante, mais c’est une bonne remarque.
Merci pour votre visite !
Bonsoir,
Je cherche à exclure les produits d’une catégorie précise, du moteur de recherche Prestashop.
Je galère un peu…
Auriez vous un petit tuyau s’il vous plaît ?
Merci
Michael
Bonjour,
A mon avis pour cela il est nécessaire d’aborder un développement sur mesure. Le seul moyen natif qui existe dans Prestashop c’est l’option d’exclure un produit de la recherche.
Merci pour votre visite !
Bonjour,
Merci pour vos tutoriels et vos articles qui me sont d’une aide très précieuse.
Je voudrais que mes clients sur mon site de vente de cartouches d’encre , ne puissent rechercher que des catégories (une catégorie représente le modèle d’imprimante et contient les cartouches compatibles avec le modèle).
Auriez-vous éventuellement une solution pour effectuer cela ?
Bonjour,
Peut-être en mettant des « tags » de compatibilité sur le produit (tag = référence d’imprimante), cela permettra ensuite qu’il sorte dans la recherche. Voir la documentation Prestashop associée à ce sujet : http://doc.prestashop.com/pages/viewpage.action?pageId=20840722
A bientôt !