jcandres Posted May 31, 2012 Share Posted May 31, 2012 Bonjour, Je souhaite modifier légérement la navigation à facette pour qu'elle ne m'affiche que les produits en stock : pour cela j'ai rajouté => p.quantity > 0 dans une requete SQL et cela fonctionne par contre du coup la pagination est erronée car elle annonce 26 pages au lieu de 7 SELECT p.*, '.($alias_where == 'p' ? '' : 'product_shop.*,' ).' '.$alias_where.'.id_category_default, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.$join.' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE '.$alias_where.'.`active` = 1 AND '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).' AND p.`quantity` > 0 AND c.active = 1 AND pl.id_lang = '.(int)$cookie->id_lang.' AND p.id_product IN ('.implode(',', $product_id_list).')' .' GROUP BY p.id_product ORDER BY '.Tools::getProductsOrder('by', Tools::getValue('orderby'), true).' '.Tools::getProductsOrder('way', Tools::getValue('orderway')). ' LIMIT '.(((int)$this->page - 1) * $n.','.$n)); si j'ai bien suivi il y a une requete ajax qui recharge la pagination mais comment lui donner l'info ? Cordialement ANDRES Jean Christophe 1 Link to comment Share on other sites More sharing options...
Maxence de Flotte Posted May 31, 2012 Share Posted May 31, 2012 Bonjour, En effet, ce n'est pas cette requête qu'il faut modifier, mais la requête plus haut (deux en fait) : Celle dont le résultat est stocké dans $all_products_out & $all_products_in. Ces deux requêtes sont très similaires, il faut appliquer la même clause where (donc sur p.quantity) et retirer cette même clause de la requête qui alimente $this->products. J'espère que cela répond à votre problème. Du coup dès que j'aurai plus de temps, je pense rajouter cette option dans la navigation à facette Link to comment Share on other sites More sharing options...
[email protected] Posted July 25, 2012 Share Posted July 25, 2012 Bonjour, J'ai également le meme dilemme filtrer les produits hors stock du modules a facette, j'ai vu que ca marchait sur votre site. Quel est la solution ? Merci d'avance Link to comment Share on other sites More sharing options...
redtango2 Posted July 25, 2012 Share Posted July 25, 2012 Bonjour peut-être connaissez vous la réponse ? je cherche à mettre la navigation à facette dès la page d'index est-ce possible ? cordialement Link to comment Share on other sites More sharing options...
Maxence de Flotte Posted July 26, 2012 Share Posted July 26, 2012 Bonjour redtango, cela est tout à fait possible, mais il faut toucher au code. Il faut dans le module (fichier modules/blocklayered/blocklayered.php) supprimmer tout ce qui est référence à la page d'accueil. C'est à dire les lignes de codes suivantes : (l2241 environ, l2336 et l2597) if ($id_parent == 1) return false; (l1212) if (Tools::getValue('id_category', Tools::getValue('id_category_layered', 1)) == 1) return; Je n'ai pas testé. Il est possible qui faille faire quelques autres modifications. Cordialement, Link to comment Share on other sites More sharing options...
Spycasso Posted December 19, 2012 Share Posted December 19, 2012 Bonjour, Maxenxe : Est-ce que ça marche chez toi ? Quelqu'un aurait testé ce que Maxence nous propose ? J'ai peur de faire une boulette et ça me parait pas tout à fait logique. Merci d'avance Link to comment Share on other sites More sharing options...
Purpleman Posted January 22, 2013 Share Posted January 22, 2013 Bonsoir , est que quelqu'un pourrait m'orienter pour mettre BlockLayered en page d accueil? apres avoir cherche dans blocklayered.php je trouve pas .... merci et bonne année 2013 a tous Link to comment Share on other sites More sharing options...
flogpro Posted January 22, 2013 Share Posted January 22, 2013 (edited) Bonjour, Maxenxe : Est-ce que ça marche chez toi ? Quelqu'un aurait testé ce que Maxence nous propose ? J'ai peur de faire une boulette et ça me parait pas tout à fait logique. Merci d'avance Bonjour, Purpelman, Spycasso, & Maxence, j'ai également le même problème pour afficher la navigation à facette en page d'accueil sur la version 1.5.2, mais cela est -il vraiment possible? ou faut t-il impérativement passer par un module de recherche avancée ? Merci ! Flogpro Edited January 22, 2013 by flogpro (see edit history) Link to comment Share on other sites More sharing options...
neonec Posted May 27, 2013 Share Posted May 27, 2013 Fichier : blocklayered.php Ligne 2386 : $query_filters_where .= ' AND p.id_product IN (SELECT pa.`id_product` FROM `'._DB_PREFIX_.'product_attribute_combination` pac LEFT JOIN `'._DB_PREFIX_.'stock` s ON (s.id_product_attribute = pac.id_product_attribute) LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = pac.`id_product_attribute` and s.`physical_quantity` > 0)'; if (version_compare(_PS_VERSION_,'1.5','>')) $query_filters_where .= Shop::addSqlAssociation('product_attribute', 'pa'); $query_filters_where .= 'WHERE '.implode(' OR ', $sub_query).') '; Link to comment Share on other sites More sharing options...
gueyome Posted November 19, 2013 Share Posted November 19, 2013 Bonjour, Je souhaite modifier légérement la navigation à facette pour qu'elle ne m'affiche que les produits en stock : pour cela j'ai rajouté => p.quantity > 0 dans une requete SQL et cela fonctionne par contre du coup la pagination est erronée car elle annonce 26 pages au lieu de 7 SELECT p.*, '.($alias_where == 'p' ? '' : 'product_shop.*,' ).' '.$alias_where.'.id_category_default, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.$join.' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE '.$alias_where.'.`active` = 1 AND '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).' AND p.`quantity` > 0 AND c.active = 1 AND pl.id_lang = '.(int)$cookie->id_lang.' AND p.id_product IN ('.implode(',', $product_id_list).')' .' GROUP BY p.id_product ORDER BY '.Tools::getProductsOrder('by', Tools::getValue('orderby'), true).' '.Tools::getProductsOrder('way', Tools::getValue('orderway')). ' LIMIT '.(((int)$this->page - 1) * $n.','.$n)); si j'ai bien suivi il y a une requete ajax qui recharge la pagination mais comment lui donner l'info ? Cordialement ANDRES Jean Christophe Bonjour Andres, j'aimerai faire cela aussi et essayer ta solution, pourrais tu stp m'indiquer quel est le fichier à modifier stp et si tu as pu régler ton problème de nombre de pages. Merci bcp Bonne soirée Link to comment Share on other sites More sharing options...
gueyome Posted November 19, 2013 Share Posted November 19, 2013 Fichier : blocklayered.php Ligne 2386 : $query_filters_where .= ' AND p.id_product IN (SELECT pa.`id_product` FROM `'._DB_PREFIX_.'product_attribute_combination` pac LEFT JOIN `'._DB_PREFIX_.'stock` s ON (s.id_product_attribute = pac.id_product_attribute) LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = pac.`id_product_attribute` and s.`physical_quantity` > 0)'; if (version_compare(_PS_VERSION_,'1.5','>')) $query_filters_where .= Shop::addSqlAssociation('product_attribute', 'pa'); $query_filters_where .= 'WHERE '.implode(' OR ', $sub_query).') '; Salut! Avec ceci, le filtre n'indique plus aucun produit dès qu'il est activé. Aurais tu une autre solution stp? Merci bcp! Link to comment Share on other sites More sharing options...
akhawat Posted December 28, 2013 Share Posted December 28, 2013 Bonjour, En effet, ce n'est pas cette requête qu'il faut modifier, mais la requête plus haut (deux en fait) : Celle dont le résultat est stocké dans $all_products_out & $all_products_in. Ces deux requêtes sont très similaires, il faut appliquer la même clause where (donc sur p.quantity) et retirer cette même clause de la requête qui alimente $this->products. J'espère que cela répond à votre problème. Du coup dès que j'aurai plus de temps, je pense rajouter cette option dans la navigation à facette Bonsoir je rencontre le même problème je souhaiterais filtrer les declinaisons dont le stock est épuisé, je suis un débutant en la matière, Pourriez vous me donner exactement les modifications a effectuer s'il vous plait ? je suis sur 1.5.6.1 Link to comment Share on other sites More sharing options...
akhawat Posted January 26, 2014 Share Posted January 26, 2014 Bonjour, Je souhaite modifier légérement la navigation à facette pour qu'elle ne m'affiche que les produits en stock : pour cela j'ai rajouté => p.quantity > 0 dans une requete SQL et cela fonctionne par contre du coup la pagination est erronée car elle annonce 26 pages au lieu de 7 SELECT p.*, '.($alias_where == 'p' ? '' : 'product_shop.*,' ).' '.$alias_where.'.id_category_default, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.$join.' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE '.$alias_where.'.`active` = 1 AND '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).' AND p.`quantity` > 0 AND c.active = 1 AND pl.id_lang = '.(int)$cookie->id_lang.' AND p.id_product IN ('.implode(',', $product_id_list).')' .' GROUP BY p.id_product ORDER BY '.Tools::getProductsOrder('by', Tools::getValue('orderby'), true).' '.Tools::getProductsOrder('way', Tools::getValue('orderway')). ' LIMIT '.(((int)$this->page - 1) * $n.','.$n)); si j'ai bien suivi il y a une requete ajax qui recharge la pagination mais comment lui donner l'info ? Cordialement ANDRES Jean Christophe Bonjour avez vous trouver la solution pour n'afficher que les declinaisons en stock, l’erreur de pagination ne me gêne pas, pourriez vous m'indiquer exactement ou je dois faire cela : pour cela j'ai rajouté => p.quantity > 0 dans une requete SQL et la requête sql a ajouter s'il vous plait cdlt Link to comment Share on other sites More sharing options...
akhawat Posted February 27, 2014 Share Posted February 27, 2014 up Link to comment Share on other sites More sharing options...
AurelB Posted February 29, 2016 Share Posted February 29, 2016 Bonjour, J'ai le même problème. J'aimerais juste que les déclinaisons hors stock n'apparaissent pas dans les résultats du module facette. Merci Link to comment Share on other sites More sharing options...
drumyseb Posted April 26, 2016 Share Posted April 26, 2016 Pareil pour moi J'aimerais voir que les tailles disponibles en Stock et non pas les tailles possiblement disponibles. Link to comment Share on other sites More sharing options...
akhawat Posted September 12, 2017 Share Posted September 12, 2017 Bonjour un petit up, quelqu'un peut il indiquer la modification exact a faire pour que les déclinaisons hors stock n'apparaissent pas dans les résultats du module facette. cdlt presta 1.6.1 Link to comment Share on other sites More sharing options...
Gilles6688 Posted December 2, 2019 Share Posted December 2, 2019 Bonjour, Petit up, toujours pas de réponse, j'aimerais aussi que mon bloc de recherche n'affiche que les tailles en stock! Merci à tous par avance... Gilles 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