Jump to content

Saisie de 2 mots dans le bloc Recherche


Recommended Posts

Bonjour,

J'utilise Prestashop 1.6.1.22. Mon "souci" se porte sur les résultats d'une recherche quand il y a plus d'un mot de saisi dans le bloc Recherche de mon site. Par exemple, si je saisis "chemisier bleu", le résultat va me retourner tous les produits dans le nom contient "chemisier" ou "bleu", alors que je ne souhaite voir que les produits dont le nom contient l'expression entière "chemisier bleu". J'en déduis que la requête qui est derrière utilise le "ou" et non le "et".

Je voudrais donc savoir s'il y a un paramétrage quelconque à faire et qui m'aurait échappé ou s'il faut aller taper dans le code ?

Vous remerciant par avance de votre aide. 

Link to comment
Share on other sites

Bonjour, il faut faire un override de la classe Search et la méthode

public static function find($id_lang, ...

et changer la méthode d'expression de recherche qui est un OU en effet avec comme séparateur l'espace

$words = explode(' ', Search::sanitize($expr, $id_lang, false, $context->language->iso_code));

 

Link to comment
Share on other sites

  • 4 weeks later...
On 6/24/2019 at 7:06 PM, Prestashop Addict said:

Bonjour, il faut faire un override de la classe Search et la méthode


public static function find($id_lang, ...

et changer la méthode d'expression de recherche qui est un OU en effet avec comme séparateur l'espace


$words = explode(' ', Search::sanitize($expr, $id_lang, false, $context->language->iso_code));

 

c'est exactement ce que je recherchait. J'ai beaucoup de mots composés, et souvent la recherche se fait mal.

Quel est le fichier pour changer la méthode d'expression de recherche?

merci pour tes infos ;)

Link to comment
Share on other sites

On 7/20/2019 at 1:24 PM, Prestashop Addict said:

@Manu1238 comme indiqué il faut modifier la méthode find() dans la  classe Search. Le source est dans /classes/Search.php. Je vous recommande de faire un override pour ne pas modifier directement le code de Prestashop.

 

bonjour,

j'ai bien ce code dans le fichier:

$words = explode(' ', Search::sanitize($expr, $id_lang, false, $context->language->iso_code));

mais ma recherche ne change pas.

Si j'indique port clés papa par exemple, ca me sort tous les porte clés.

merci pour ton aide

Link to comment
Share on other sites

  • 2 years later...

Bonjour, j'ai trouvé une solution qui fonctionne si ça peut aider (PS 1.6.1.x):

Il faut modifier le fichier Search.php et sa méthode find() et ça se passe ici :


Remplacer :
2022-06-16_16h48_11.jpg.5213a6cd2a7a504570189b5275ad133d.jpg

 

Par :

2022-06-16_16h48_45.jpg.54f6b6824a37a79848fbf445394793eb.jpg

De mon côté ça fonctionne très bien, sur 2 mots ou + !

 

Link to comment
Share on other sites

il y a 1 minute, Ric34 a dit :

Bonjour, j'ai trouvé une solution qui fonctionne si ça peut aider (PS 1.6.1.x):

Il faut modifier le fichier Search.php et sa méthode find() et ça se passe ici :


Remplacer :
2022-06-16_16h48_11.jpg.5213a6cd2a7a504570189b5275ad133d.jpg

 

Par :

2022-06-16_16h48_45.jpg.54f6b6824a37a79848fbf445394793eb.jpg

De mon côté ça fonctionne très bien, sur 2 mots ou + !

 

Bien entendu, nous rappons de ne jamais intervenir sur le cœur de PrestaShop et d'effectuer, sur PrestaShop 1.6, une surcharge de la méthode de cette classe.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...