Jump to content

[Résolu] Module Recherche Rapide - Ajout mot clef pris en compte


Recommended Posts

Bonjour,

 

je suis actuellement en train de développer un module de recherche avancée, mais actuellement je voudrais me renseigner sur le module de Prestashop - Recherche rapide.

 

Mon problème est le suivant, dans la Bdd et plus précisemment dans la table product j'ai rajouté un champs spécifique pour un site, ce champs s'intitule reference_label. Actuellement quand on réaliser une recherche et que l'on renseigne une référence, la recherche rapide va chercher l'information concernant la référence dans la table feature. Or par la suite je cherche à supprimer ce champs reference_label de la table feature afin, comme je l'ai indiqué de l'inclure dans la table product. Et là le problème se pose, en réalisant cette manipulation la recherche rapide (en tapant une référence) ne va plus fonctionner (en effet celle-ci ira chercher la référence dans l'ancienne table).

 

Je dois donc modifier le code afin de remplacer mon ancien champs de la table feature par celui créer dans la table product.

 

Le fichier en question à modifier (enfin selon moi) est alors le fichier Search.php situé dans le dossier /classes/, et plus précisemment je pense que c'est la fonction find(...) de cette même classe mais après analyse du code je suis un peu perdu.

 

C'est pourquoi je m'adresse à vous tous, quelqu'un à t'il déjà réaliser ce genre de manipulation ? Ou quelqu'un peut-il me renseigner plus précisemment sur ce fichier Search.php afin que je puisse modifier le code.

 

Cordialement

Edited by Pepitoww (see edit history)
Link to comment
Share on other sites

Bonjour,

 

j'ai trouvé où modifier le code afin de permettre à la recherche rapide (incluse de base dans Prestashop) de prendre en compte des mots clefs que je défini mais n'ayant pas encore tester afin de valider mes dires je ne poste donc pas les modifications à effectuer. Si des personnes sont interessées -> MP ;)

 

Cordialement

Edited by Pepitoww (see edit history)
Link to comment
Share on other sites

Perso je suis intéresser :P

 

mais je m’interroge de l'utilité ?, genre si un client tape tel mots clé dans la barre de recherche, il se passe quoi précisément avec tes modifications ?

 

bien a toi

Link to comment
Share on other sites

Bonjour,

 

j'ai trouvé où modifier le code afin de permettre à la recherche rapide (incluse de base dans Prestashop) de prendre en compte des mots clefs que je défini mais n'ayant pas encore tester afin de valider mes dires je ne poste donc pas les modifications à effectuer. Si des personnes sont interessées -> MP ;)

 

Cordialement

 

Edit: je viens de me rendre compte que le titre de mon post n'était pas très parlant et précis, je me permet de le préciser ici si éventuellement d'autres personnes sont interéssées:

Module recherche rapide - Ajout de mot clef pris en compte lors d'une recherche

 

Puisque c'est un espace communautaire je me demande bien pourquoi tu demandes à être contacté en MP pour nous faire part de tes "trouvailles" . C'est le forum développement et la manière dont tu agis laisserait penser que tu es venu , en plus de chercher des informations, nous vendre quelque chose.

Bref c'est un forum ici. Pour les discussions en MP il existe un truc que l'on appelle les mails ;)

 

Je vois absolument aucun intérêt à ce post à ce jour.

Link to comment
Share on other sites

Perso je suis intéresser :P

 

mais je m’interroge de l'utilité ?, genre si un client tape tel mots clé dans la barre de recherche, il se passe quoi précisément avec tes modifications ?

 

bien a toi

 

Tiens c'est marrant utaku ton site me dit quelque chose... ne serait-ce déja que par son nom. On s'est pas déja croisé y'a un bail ? mais le site aurait drôlement changé ?

Link to comment
Share on other sites

Bonjour,

 

encore un qui n'a pas lu mon dernier post, où qui n'a voulu lire que ce qui l'arrangeait... Pourtant je précise bien que n'ayant pas encore valider et confirmer mes dires je ne poste pas encore afin de ne pas partager des choses qui seraient fausses. Je posterai donc une solution quand je serais sur que ce que j'ai modifier réalise bien ce que je voulait à la base, c'est pourquoi pour les pressés, je leur proposais de me MP si il voulait une ébauche de solution rapidement.

 

@utaku: tout d'abord il faut savoir que la recherche rapide de Prestashop se base sur des mots clefs issus de certains champs de des tables product et features entres autres, dans mon cas j'ai déplacé un champs de features dans product et je compte par la suite supprimer l'ancien champs or le code prévu par les devéloppeurs de Prestashop ira toujours chercher l'ancienne valeur et je ne pourrais plus faire de recherche sur celui-ci donc l'utilité de modifier le code. De plus je voulais également que depuis le back office on puisse paramétrer le poids de mon mot clef.

 

Plus simplement, par exemple un utilisateur lambda rajoute pour une raison qui le regarde un nouveau champs dans la table product et souhaite que l'on puisse faire une recherche dessus (tout du moins qu'il soit pris en compte), il faudra donc modifier quelques lignes de code afin que ce champs soit pris en compte et indexé en tant que mot clef pour l'utiliser dans la recherche.

 

Cordialement

Link to comment
Share on other sites

Bonjour,

 

voilà donc la solution à mon problème initial, permettant donc de rajouter à l'indexation de PrestaShop une référence (pour mon cas) qui sera prise en compte lors de la recherche rapide et dont le poids peut être configuré depuis le back office (référence est un champ que j'ai rajouté dans la table product)

 

Dans /override/controllers/admin/AdminSearchConfController.php (copie/colle du constructeur et ajout à la fin de $fields_options)

[...]
'PS_SEARCH_WEIGHT_REFERENCE' => array(
'title' => $this->l('References weight'),
'size' => 4,
'validation' => 'isUnsignedInt',
'type' => 'text',
'cast' => 'intval'
)

Permet alors d'ajouter le champ dans le backoff relatif au poids de mon nouveau mot clef

 

Dans /override/classes/Search.php (copie/colle de la méthode indexation() et ajout à la fin de $weight_array ~ ligne 53)

'references' => Configuration::get('PS_SEARCH_WEIGHT_REFERENCE')

 

Toujours dans cette même méthode, on ajoutera ~ ligne 84 (sur le même modèle que $product['features'])

$product['references'] = Search::getReferences($db, (int)$product['id_product'], (int)$product['id_lang']);

 

Enfin on ajoutera une méthode getReferences dans ce même fichier

public static function getReferences($db, $id_product, $id_lang) {
  $references = '';
  $referencesArray = $db->executeS('
SELECT p.reference_label FROM '._DB_PREFIX_.'product p
WHERE p.id_product = '.(int)$id_product);
  foreach ($referencesArray as $reference)
$references .= $reference['reference_label'].' ';
  return $references;
}

 

N'oubliez pas de reconstruire l'index via l'onglet Préférences -> Recherche pour que tous vos produits déjà rentrés dans la base prennent en compte ce nouveau mot clef (autrement seul les nouveaux produits prendront en compte ce mot clef)

 

Si vous avez des questions ou voulez plus de précision sur le code n'hésitez pas.

Cordialement

Edited by Pepitoww (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Bonjour à vous,

 

ce que je peux vous proposer (si on part du système initial de recherche par Presta) c'est de rajouter les catégories/sous-catégories avec le même principe que j'ai utilisé pour mon cas. C'est à dire qu'en tapant une catégorie ou sous catégorie on puisse afficher tous les produits correspondant. Bien que ce système ne risque peut-être pas d'être aussi précis qu'un véritable module incluant une recherche avec catégories, il serait, pour ma part fiable. (mais avec le système de poids on pourrait éventuellement remédier à la précision)

Catégories ou sous catégories finalement avec cette modification il n'y aurait pas besoin de les différencier, en effet un produit à un id de catégorie par défaut (qui peut-être donc soit une catégorie soit une sous catégorie).

Si c'est ce que vous voulez, je pourrais vous aider à coder cette solution.

Dans l'autre cas, il faudra s'orienter vers un module complémentaire de recherche plus approfondi (je travaille actuellement sur le développement de ce genre de module si vous avez besoin d'aide niveau codage).

 

Cordialement

Edited by Pepitoww (see edit history)
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...