déclinaisons sur Prestashop
Si vous utilisez parfois le moteur de recherche disponible sur le front-office de votre boutique en ligne Prestashop, vous aurez surement remarqué qu’il fonctionne parfaitement tant que la recherche n’est pas faite sur la référence d’une déclinaisons d’un de vos produits. Cet article vous explique comment modifier le code source de Prestashop afin de permettre une recherche sur les références des déclinaisons.
La version de Prestashop ayant servis de référence pour l’établissement des modifications qui suivent est la V.1.5.4.0.
Par défaut, Prestashop autorise les recherches en front-office via le bloc de recherche (blocksearch) sur de nombreux critères comme le nom des produits ou encore la référence principale des produits mais pas sur la référence d’une déclinaison.
Pour résoudre ce problème, il y a deux solutions envisageables. La première solution consiste à modifier directement (et de façon brutale) le coeur de Prestashop, à savoir la fonction « getAttributes » située dans classes/search.php. La seconde solution consiste à surcharger le code en utilisant le dossier override de Prestashop.
Modifier la fonction getAttribute dans le coeur de Prestashop
Ouvrez le fichier classes/search.php
A la ligne 344 vous verrez la fonction getAttributes qu’il faut modifier.
Remplacez la ligne 351 : SELECT al.name FROM ‘._DB_PREFIX_.’product_attribute pa
par : SELECT al.name, pa.ean13, pa.reference, pa.upc FROM ‘._DB_PREFIX_.’product_attribute pa
Puis remplacez la ligne 357 : $attributes .= $attribute[‘name’].’ ‘;
par : $attributes .= $attribute[‘name’].’ ‘.$attribute[‘ean13′].’ ‘.$attribute[‘reference’].’ ‘.$attribute[‘upc’].’ ‘;
Conserver l’intégrité du coeur de Prestashop
Copiez le fichier classes/search.php sur votre ordinateur et chargez le dans override/classes/ s’il n’existe pas déjà.
Dans ce nouveau fichier Search.php, à la ligne 344 vous verrez la fonction getAttributes qu’il faut modifier.
Remplacez la ligne 351 : SELECT al.name FROM ‘._DB_PREFIX_.’product_attribute pa
par : SELECT al.name, pa.ean13, pa.reference, pa.upc FROM ‘._DB_PREFIX_.’product_attribute pa
Puis remplacez la ligne 357 : $attributes .= $attribute[‘name’].’ ‘;
par : $attributes .= $attribute[‘name’].’ ‘.$attribute[‘ean13′].’ ‘.$attribute[‘reference’].’ ‘.$attribute[‘upc’].’ ‘;
En ayant recours à cette deuxième solution consistant à utiliser la technique de l’override, vous conservez l’intégrité du coeur de Prestashop et vous pourrez effectuer les futures mises à jour de votre version de Prestashop sans avoir à ressaisir vos modifications permettant d’autoriser la recherche de référence de déclinaisons en front-office.
Merci encore pour votre gentillesse ! Quesque j’aimerai savoir coder grrrrrrrrr !! je suis, si on peut dire, un bidouilleur du dimanche lol… Mais j’imagine qu’il faut avoir de longues années d’apprentissage pour avoir votre niveau, en tout cas, je vous félicite !!
Effectivement j’avais mal compris ^^ ce que vous souhaitez faire nécessiterait d’implémenter le nom des catégories dans l’index du moteur de recherche en base de données et là c’est une autre histoire … mais si je me penche sur le sujet je mettrais à jour l’article 😉
Merci pour votre réactivité !! J’hésiterais pas à le partager 😉 Ceci dit, je me suis mal exprimé, bien évidemment que le moteur de recherche de prestashop cherche dans les catégories et sous catégories mais ce que je voulais dire c’est que supposons que j’ai une catégorie ayant le nom de: « MACBOOK PRO A1485 » et que je tape « MACBOOK PRO A1485 » J’aimerai que le module de recherche me trouve et m’affiche ce nom de catégorie, car en fait la barre de recherche cherche que les produit et les déclinaisons (grâce à vous 😉 ) mais ne trouve pas le nom de la catégories. Je sais pas si j’ai été claire lol, peut être qu’il faudrait que je vous communique mon url pour que je puisse être le plus compréhensible possible ?
Merci pour ce commentaire 🙂 N’hésitez pas à le partager s’il vous a été utile. Le module de recherche de Prestashop recherche également dans les sous-catégories. Vous voulez probablement dire « déclinaison » lorsque vous parlez d’option et c’est étonnant que la recherche ne se fasse pas à ce moment.
Merci pour ce tuto qui est plus que géniale, je comprend pas comment puis je être le seul à le commenter ! Cependant, saviez vous si cela serait possible d’effectuer une recherche parmis simplement les sous-catégories ? car mes produits sont en fait des options et donc le moteur de recherche ne cherche pas au bon endroit :(( Merci encore pour ce tuto 😉
Merci pour la fonctionnalité. Je tiens cependant à préciser qu’il faut IMPERATIVEMENT reconstruire l’index des produits pour que cela fonctionne. (Préférences/Rechercher). Curieux que personne ne l’ait mentionné jusqu’à présent!
Merci c’est gentil. Ça fait plus de 10 ans que je développe donc oui ça fait quand même quelques années !
Bonjour, Avez vous un tuto également pour le faire sur le moteur de recherche du back office ?
Il n’y a malheureusement pas de tuto disponible pour cela pour le moment.
Est-ce que cela est prévu ? Ou avec vous une idée de comment faire SVP ? ?
@Sebastien Oui votre problème provient probablement de votre module. Essayez de le désactiver pour voir si les modifications que vous avez faites fonctionnent mieux.
Cela ne fonctionne pas chez moi même après avoir reconstuit l’index. Je possède le module Advanced Search 4, est-ce que ca pourrait courcircuité quelques choses ?
Je suis en Prestashop 1.5.6.2