Moteur de recherche


7 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

Je suis sur la version 6.2

Dans le moteur de recherche je voudrais limiter la recherche a certains produits.

par exemple lorsqu'on fait une recherche on obtient le listing des produits, des marques, des articles...

J'ai une categorie qui est "off" sur le site mais les produits de cette categorie sont "on", de ce fait lorsqu'on recherche le nom du produit sur le moteur on va trouver les produits.

Je voudrais n'afficher que les produits des categories "on".

Pourquoi cela me pose probleme car pour un meme produit, il y a des references differentes selon que le produit soit avec un boitage, sans boitage, dans un paquet cadeau ainsi chaque produit a un mode d'emploi telechargeable different. Ce sont un peu des options mais comme on ne peut pas ajouter des pieces telechargeables par options, j'ai duplique le produit et change simplement sa reference et sa piece jointe.

Sur le moteur de recherche si tous les produits apparaissent cela me fait une liste de photos toutes les memes. C'est pour cela que je souhaiterai ne faire apparaitre que les produits de la catagorie principale sans afficher les produits d'un categorie mise en "off".

Est-ce possible ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans la fonction params_affiche_produits(), il faut ajouter "AND pc.etat = "1" au dans la requête SQL de sélection des produits, vers la ligne 1330.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour

A quel endroit exact doit-on l'ajouter ?

/**

* params_affiche_produits()

*

* @param mixed $condition_value1

* @param mixed $condition_value2

* @param mixed $type

* @param mixed $nb_par_page

* @param string $mode

* @param integer $reference_id

* @param boolean $always_show_multipage_footer

* @return

*/

function params_affiche_produits($condition_value1, $condition_value2, $type, $nb_par_page, $mode = 'general', $reference_id = 0, $nb_colonnes, $always_show_multipage_footer = true)

{

$cond = '1';

$titre = '';

$affiche_filtre = '';

$inner = '';

$sup = '';

$params_list = array();

if ($nb_par_page % $nb_colonnes > 0) {

$nb_par_page = $nb_par_page + ($nb_colonnes - ($nb_par_page % $nb_colonnes));

}

if ($nb_colonnes == 4) {

$params_list['small_width'] = 150;

$params_list['small_height'] = 150;

} elseif ($type == 'associated_product') {

$params_list['small_width'] = 160;

$params_list['small_height'] = 160;

} else {

$params_list['small_width'] = $GLOBALS['site_parameters']['small_width'];

$params_list['small_height'] = $GLOBALS['site_parameters']['small_height'];

}

$params_list['cartridge_product_css_class'] = 'product_per_line_' . $nb_colonnes;

$params_list['nb_colonnes'] = $nb_colonnes;

if ($type == 'category' && is_peelfr_module_active() && is_special_menu_items($condition_value1)) {

$mode = 'line';

$sup = 'associated_product';

$params_list['small_width'] = 150;

$params_list['small_height'] = 125;

if ($condition_value1 == 1) { // On affiche le module à la carte

$params_list['qid_carte'] = query('SELECT c.id, c.parent_id, c.nom_' . $_SESSION['session_langue'] . ' as nom , c.description_' . $_SESSION['session_langue'] . ' as description , c.image_' . $_SESSION['session_langue'] . ' as image

FROM peel_categories c

WHERE c.etat = "1" AND c.parent_id = "1"

ORDER BY c.position ASC, nom ASC');

$params_list['qid_prix_carte'] = query('SELECT MIN(prix) AS prix_cat, tva

FROM peel_produits p

INNER JOIN peel_produits_categories pc ON pc.produit_id = p.id

INNER JOIN peel_categories c ON pc.categorie_id = c.id

WHERE c.etat = "1" AND pc.categorie_id = "4"');

}

}

$display_multipage_template_name = 'default';

if ($type == 'catalogue') {

$cond = "p.id_marque='" . intval($condition_value1) . "'";

} elseif ($type == 'nouveaute') {

$cond = "p.on_new='1'";

$titre = NOUVEAUTES;

} elseif ($type == 'promotion') {

$cond = "p.on_promo='1'";

$titre = PROMOTIONS;

} elseif ($type == 'special') {

$cond = "p.on_special='1'";

$titre = SPECIAL;

$display_multipage_template_name = 'light';

} elseif ($type == 'suggest') {

$cond = "p.prix>='" . nohtml_real_escape_string($condition_value1) . "'";

$titre = OUR_SUGGEST;

} elseif ($type == 'top') {

$cond = "p.on_top='1'";

$titre = TOP;

} elseif ($type == 'category') {

$params_list['affiche_filtre'] = affiche_filtre($condition_value1, true);

if ($GLOBALS['site_parameters']['category_count_method'] == 'global') {

$catid_array = get_category_sons_and_itself($condition_value1);

} else {

$catid_array = array($condition_value1);

}

$cond = 'pc.categorie_id IN (' . implode(',', $catid_array) . ') ';

$titre = LIST_PRODUCT;

} elseif ($type == 'flash') {

$cond = "p.on_flash='1' AND '" . date('Y-m-d H:i:s', time()) . "' BETWEEN p.flash_start AND p.flash_end";

$titre = FLASH;

} elseif ($type == 'check') {

$cond = "p.on_check='1'";

$titre = CHEQUE_CADEAU;

} elseif ($type == 'associated_product') {

$cond = "pr.produit_id = '" . intval($reference_id) . "'";

$titre = ASSOCIED_PRODUCT;

$inner = "INNER JOIN peel_produits_references pr ON p.id = pr.reference_id";

} elseif ($type == 'search') {

$cond = build_terms_clause($condition_value1, $condition_value2, $_GET['match']);

$cond .= (!empty($additional_cond))?$additional_cond:""; // on ajoute les conditions supplémentaires

$inner = (!empty($additional_inner))?$additional_inner:""; // on ajoute les jointures supplémentaires

}

$sql = 'SELECT p.*, c.id AS categorie_id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie

FROM peel_produits p

INNER JOIN peel_produits_categories pc ON pc.produit_id = p.id

INNER JOIN peel_categories c ON pc.categorie_id = c.id

' . $inner . '

WHERE p.etat = "1" AND p.on_gift = "0" AND p.nom_' . $_SESSION['session_langue'] . ' != "" AND ' . $cond . '

GROUP BY p.id

ORDER BY p.`' . word_real_escape_string((isset($_GET['tri']) ? $_GET['tri'] : 'position')) . '` ' . word_real_escape_string((isset($_GET['sort']) ? $_GET['sort'] : 'ASC')) . ' , p.id DESC';

if ($type == 'special') {

$Links = new Multipage($sql, 'home', $nb_par_page, 7, 0, $always_show_multipage_footer, 'default');

} elseif ($type == 'associated_product') {

$Links = new Multipage($sql, 'affiche_produits_reference', '*', 7, 0, $always_show_multipage_footer, 'default');

} else {

$Links = new Multipage($sql, 'affiche_produits', $nb_par_page, 7, 0, $always_show_multipage_footer, $display_multipage_template_name);

}

$params_list['nb_colonnes'] = $nb_colonnes;

$params_list['Links'] = $Links;

$params_list['titre'] = $titre;

$params_list['mode'] = $mode;

return $params_list;

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

au niveau de la ligne


WHERE p.etat = "1" AND p.on_gift = "0" AND p.nom_' . $_SESSION['session_langue'] . ' != "" AND ' . $cond . '
[/CODE]

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Rebonjour

Si j'ajoute pc.etat = "1" dans

WHERE p.etat = "1" AND pc.etat = "1" AND p.on_gift = "0" AND p.nom_' . $_SESSION['session_langue'] . ' != "" AND ' . $cond . '

Les produits des categories ne s'affichent plus et je n'ai plus rien dans l'affichage du moteur de recherche

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

J'ai fais une erreur, ce n'est pas pc.etat = "1" mais c.etat = "1". L'alias pc correspond à la table peel_produits_categories qui n'a pas de champ etat.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci c'est impeccable !

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping