n.robert Posted June 21, 2019 Share Posted June 21, 2019 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 More sharing options...
Eolia Posted June 21, 2019 Share Posted June 21, 2019 il faut aller taper dans le code^^ Link to comment Share on other sites More sharing options...
Prestashop Addict Posted June 24, 2019 Share Posted June 24, 2019 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 More sharing options...
Manu-41 Posted July 19, 2019 Share Posted July 19, 2019 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 More sharing options...
Prestashop Addict Posted July 20, 2019 Share Posted July 20, 2019 @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. Link to comment Share on other sites More sharing options...
Manu-41 Posted July 24, 2019 Share Posted July 24, 2019 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 More sharing options...
Eolia Posted July 24, 2019 Share Posted July 24, 2019 la métode est un OU et non pas un ET donc c'est normal Link to comment Share on other sites More sharing options...
Prestashop Addict Posted July 24, 2019 Share Posted July 24, 2019 Comme dit @Eolia il faut modifier la requête SQL pour faire un ET non plus un OU Link to comment Share on other sites More sharing options...
Asu34 Posted June 15, 2022 Share Posted June 15, 2022 Bonjour je me permets remonter ce topic, je cherche la même chose mais je n'arrive pas à modifier cette méthode (ET par ou) ? J'ai de mon côté ce bout de code : https://paste.ofcode.org/Q97hbLWbwG5UcRxy3bf8f Qu'en pensez vous ? Merci par avance, Link to comment Share on other sites More sharing options...
Asu34 Posted June 16, 2022 Share Posted June 16, 2022 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 : Par : De mon côté ça fonctionne très bien, sur 2 mots ou + ! Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 16, 2022 Share Posted June 16, 2022 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 : Par : 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now