abatonime Posted August 31, 2010 Share Posted August 31, 2010 Bonjour,Est-il possible de cacher automatiquement aux clients toutes les catégories qui ne contiennent pas d'articles.Je sais comment faire manuellement, avec les groupes. (ne pas autoriser une catégorie au groupe Défaut)Cordialement,Olivier. 1 Link to comment Share on other sites More sharing options...
Greengold Posted June 13, 2011 Share Posted June 13, 2011 Bonjour,Je relance ce topic car j'ai aussi besoin de savoir s'il existe un paramétrage pour masquer les catégories (ou sous catégories) ne contenant aucun produit.Quelqu'un a une réponse ?Cordialement,Sébastien 1 Link to comment Share on other sites More sharing options...
Intra Posted October 29, 2012 Share Posted October 29, 2012 Bonjour, même problème, j'avais eu une réponse sur ce site (voir dans les commentaires) : http://www.prestacrea.com/blog/37-afficher-le-nombre-de-produits-dans-les-sous-categories A tester Link to comment Share on other sites More sharing options...
lordbdp Posted July 25, 2013 Share Posted July 25, 2013 Bonjour, Je relance le sujet car je ne trouve pas la solution... Merci d'avance. Link to comment Share on other sites More sharing options...
Intra Posted July 25, 2013 Share Posted July 25, 2013 (edited) Bonjour, d'après ce tuto : http://www.prestacre...sous-categories ainsi que leur commentaire indiquant comment récupérer le nombre exact de produits dans une catégorie et ses sous-catégories : [...] Pour pallier à cela, il faut soit attribuer les produits de la sous-catégorie à la catégorie parente, soit modifier le code pour que la catégorie parente affiche le nombre total de produits contenus dans ses sous-catégories. Voici la réponse que j'apporterai en utilisant la seconde solution de Prestacrea : Fichier PHP : récupération du nombre de produits : Modifier '/override/classes/category.php', ajouter : public function getSubCategories($id_lang, $active = true) { if (!Validate::isBool($active)) die(Tools::displayError()); $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description FROM `'._DB_PREFIX_.'category` c '.Shop::addSqlAssociation('category', 'c').' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE `id_parent` = '.(int)$this->id.' '.($active ? 'AND `active` = 1' : '').' AND cg.`id_group` '.$sql_groups.' GROUP BY c.`id_category` ORDER BY `level_depth` ASC, category_shop.`position` ASC '); foreach ($result as &$row) { $row['id_image'] = file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg') ? (int)$row['id_category'] : Language::getIsoById($id_lang).'-default'; $row['legend'] = 'no picture'; $result_products_nbr = Db::getInstance()->ExecuteS(' SELECT COUNT(pcp.id_product) as totalProducts FROM '._DB_PREFIX_.'category_product pcp LEFT JOIN '._DB_PREFIX_.'product pp ON pp.id_product = pcp.id_product INNER JOIN '._DB_PREFIX_.'category pc ON pc.id_parent = pcp.id_category INNER JOIN '._DB_PREFIX_.'category_product pcp2 ON pcp2.id_category = pc.id_category LEFT JOIN '._DB_PREFIX_.'product pp2 ON pp2.id_product = pcp2.id_product WHERE pcp.id_category='.$row['id_category'].' AND pp.active=1 AND pp2.active=1'); $row['products_nbr'] = $result_products_nbr[0]['totalProducts']; } return $result; } Là on a donc récupéré le nombre de produits dans la catégorie courante, ainsi que dans ses sous-catégories, accessible dans les fichiers templates avec la variable : ({$subcategory.products_nbr}) On peut donc avec cette variable choisir de masquer les sous-catégories vides : Fichier TPL : Modifier le fichier '/themes/montheme/category.tpl': Là où on a : <ul>{foreach from=$subcategories item=subcategory} Ajouter avant le "<li>" : {if $subcategory.products_nbr>0} <li> Puis à la fermeture de l'élément liste : </li> {/if} Voilà, je pense que ça peut être amélioré. Sachant que la première solution est plus simple : affecter le produit à chacune de ses catégories parentes. Edited July 26, 2013 by Intra (see edit history) Link to comment Share on other sites More sharing options...
bart0356 Posted August 7, 2013 Share Posted August 7, 2013 Bonjour, Je ne sais pas si ça peut aider mais j'ai pour le moment caché les catégories vides (menu gauche) Je préciser que mes produits sont affectés aux catégories parentes Dans le fichier modules/blockcategories.php J'ai ajouté cette ligne : AND (c.id_category IN (SELECT id_category FROM `'._DB_PREFIX_.'category_product`) OR c.`id_parent` = 1) Aux alentours de la ligne 174 (requête SQL chargée d'envoyer les données) A adapter aux autres besoins, chez moi ça fonctionne Cdt, Link to comment Share on other sites More sharing options...
Nampoina Posted May 29, 2017 Share Posted May 29, 2017 Bonjour, Je relance ce post pour demander si quelqu'un à une solution pour la version 1.6.1.12 de prestashop car le tuto précédent ne fonctionne pas chez moi. Je vous remercie d'avance. Cordialement 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