Prestashop 1.6 - recherche dans champs supplémentaires
Vous avez créé un champ supplémentaire à la table product (ainsi que dans product_shop) et vous souhaitez voir apparaitre son contenu dans le système de recherche de Prestashop.
Je vous conseille d’utiliser le système d’override de Prestashop
dans cette exemple voici comment indexer un champ « equivalences » précédemment créé
créez le fichier override/classes/Search.php
déclarez la classe
<?php
class Search extends SearchCore {
}
copiez les fonctions getProductsToIndex() et indexation() entre les 2 accolades
dans getProductsToIndex() chercher
if (is_array($weight_array)) {
foreach ($weight_array as $key => $weight) {
if ((int)$weight) {
switch ($key) {
case 'pname':
$sql .= ', pl.name pname';
break;
case 'reference':
$sql .= ', p.reference';
break;
// ajout equivalences
case 'equivalences':
$sql .= ', p.equivalences';
break;
// fin ajout equivalences
case 'supplier_reference':
$sql .= ', p.supplier_reference';
break;
case 'ean13':
$sql .= ', p.ean13';
break;
case 'upc':
$sql .= ', p.upc';
break;
etc..
et ajoutez case ’equivalences’ comme ci dessus
dans indexation() cherchez
// Every fields are weighted according to the configuration in the backend
$weight_array = array(
'pname' => Configuration::get('PS_SEARCH_WEIGHT_PNAME'),
'reference' => Configuration::get('PS_SEARCH_WEIGHT_REF'),
// ajout equivalences
'equivalences' => Configuration::get('PS_SEARCH_WEIGHT_REF'),
// fin ajout equivalences
'pa_reference' => Configuration::get('PS_SEARCH_WEIGHT_REF'),
etc..
et ajoutez ’equivalences’ => choisissez le poids mot à appliquer comme ci dessus
sauvegardez le fichier
videz le cache
Relancez l’indexation !