Sign in to follow this  
Followers 0

Moteur de recherche


7 posts in this topic

Posted · Report post

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 ?

Share this post


: post
Share on other sites

Posted · Report post

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.

Share this post


: post
Share on other sites

Posted · Report post

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;

}

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

au niveau de la ligne


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

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

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.

Share this post


: post
Share on other sites

Posted · Report post

Merci c'est impeccable !

Share this post


: post
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
Sign in to follow this  
Followers 0

Twitter Advisto ecommerce

Facebook PEEL Shopping