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.