pedrosystem Posted November 24, 2011 Share Posted November 24, 2011 Bonjour, après quelques heures de recherche !!! j'ai trouvé la syntaxe suivante permettant d'afficher seulement les sous catégories de la catégorie active. je modifie le fichier blockcategories.php public function hookLeftColumn($params) { global $smarty, $cookie; $id_customer = (int)($params['cookie']->id_customer); $id_group = $id_customer ? Customer::getDefaultGroupId($id_customer) : _PS_DEFAULT_CUSTOMER_GROUP_; $id_product = (int)(Tools::getValue('id_product', 0)); $id_category = (int)(Tools::getValue('id_category', 0)); $id_lang = (int)($params['cookie']->id_lang); $smartyCacheId = 'blockcategories2|'.$id_group.'_'.$id_lang.'_'.$id_product.'_'.$id_category; if($id_category) $category = new CategoryCore($id_category,$id_lang); else $category = Category::getRootCategory ($id_lang); $id_category = $category->id; Tools::enableCache(); if (!$this->isCached('blockcategories.tpl', $smartyCacheId)) { $maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH'); if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT c.id_parent, c.id_category,c.nleft,c.nright, cl.name, cl.description, cl.link_rewrite FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE (c.`active` = 1 OR c.`id_category` = 1) '.((int)($maxdepth) != 0 ? ' AND `level_depth` <= '.(int)($maxdepth) : '').' AND cg.`id_group` = '.$id_group.' AND c.nleft >= '.$category->nleft.' AND c.nright <= '.$category->nright.' ORDER BY `level_depth` ASC, c.`position` ASC') ) return; $resultParents = array(); $resultIds = array(); foreach ($result as &$row) { $resultParents[$row['id_parent']][] = &$row; $resultIds[$row['id_category']] = &$row; } $blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'),$id_category); unset($resultParents); unset($resultIds); $isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false); if (Tools::isSubmit('id_category')) { $cookie->last_visited_category = $id_category; $smarty->assign('currentCategoryId', $cookie->last_visited_category); } if (Tools::isSubmit('id_product')) { if (!isset($cookie->last_visited_category) OR !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $cookie->last_visited_category)))) { $product = new Product($id_product); if (isset($product) AND Validate::isLoadedObject($product)) $cookie->last_visited_category = (int)($product->id_category_default); } $smarty->assign('currentCategoryId', (int)($cookie->last_visited_category)); } $smarty->assign('blockCategTree', $blockCategTree); if (file_exists(_PS_THEME_DIR_.'modules/blockcategories/blockcategories.tpl')) $smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories/category-tree-branch.tpl'); else $smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl'); $smarty->assign('isDhtml', $isDhtml); } $smarty->cache_lifetime = 31536000; // 1 Year $display = $this->display(__FILE__, 'blockcategories.tpl', $smartyCacheId); Tools::restoreCacheSettings(); return $display; sauf que le probleme est que imaginons que j'ai le menu suivant : -APPLE --iphone --ipod -SAMSUNG --tv --home cinéma quand je clique sur APPLE par exemple, il s'affiche cela : --iphone --ipod Cela donne le résultat souhaité , cepandant si je clique sur iphone ou ipod le menu catégorie ce vide !!! alors qu'il devrait rester affiché : --iphone --ipod Merci de votre aide , en espèrant que je suis assez claire Link to comment Share on other sites More sharing options...
pedrosystem Posted November 25, 2011 Author Share Posted November 25, 2011 Personne ne peut m'aider ? Link to comment Share on other sites More sharing options...
pedrosystem Posted November 27, 2011 Author Share Posted November 27, 2011 c'est pas assez claire ou personne n'a de réponse ? Link to comment Share on other sites More sharing options...
Sbizz Posted November 28, 2011 Share Posted November 28, 2011 Bonjour, J'ai du mal a comprendre votre problème. Le but de votre modification est d'afficher les sous catégories de la catégorie actuelle, non ? Il est donc normal que si vous cliquez sur "iPhone", rien n'apparaisse étant donné que celle-ci n'a aucune sous-catégorie. Il est donc normal que votre requête ne vous renvoie rien. Prenons un exemple concret : - Apple -- iPhone -- iPad -- iTruc - Samsung -- TV -- Home Cinéma De base, en arrivant sur l'accueil, vous êtes dans la catégorie "Accueil". Vous remarquerez qu'elle n'apparait pas. Si vous cliquez sur "Apple", vous obtiendrez cette arborescence : - iPhone - iPad - iTouch Si vous cliquez sur iPad, vous n'aurez rien. C'est logique ET pas logique. Car normalement, dans une vraie arborescence, vous devriez avoir la catégorie courante. Mais vous devriez pouvoir la récupérer avec une simple requête, vu que vous avez l'ID de cette dernière en GET. Link to comment Share on other sites More sharing options...
Grafics Posted November 28, 2011 Share Posted November 28, 2011 Si tu veux un résultat comme sur ce site : http://www.archeriedesvolcans.com/90-take-downs-demontables Je peux t'aider (Contact moi). Link to comment Share on other sites More sharing options...
pedrosystem Posted November 28, 2011 Author Share Posted November 28, 2011 Bonjour, J'ai du mal a comprendre votre problème. Le but de votre modification est d'afficher les sous catégories de la catégorie actuelle, non ? Il est donc normal que si vous cliquez sur "iPhone", rien n'apparaisse étant donné que celle-ci n'a aucune sous-catégorie. Il est donc normal que votre requête ne vous renvoie rien. Prenons un exemple concret : - Apple -- iPhone -- iPad -- iTruc - Samsung -- TV -- Home Cinéma De base, en arrivant sur l'accueil, vous êtes dans la catégorie "Accueil". Vous remarquerez qu'elle n'apparait pas. Si vous cliquez sur "Apple", vous obtiendrez cette arborescence : - iPhone - iPad - iTouch Si vous cliquez sur iPad, vous n'aurez rien. C'est logique ET pas logique. Car normalement, dans une vraie arborescence, vous devriez avoir la catégorie courante. Mais vous devriez pouvoir la récupérer avec une simple requête, vu que vous avez l'ID de cette dernière en GET. Ce qu'il faudrait, c'est que si il n'y a pas de sous-catégorie il laisse le menu tel quel !! par contre si il y a des sous-catégorie alors il n'affiche que celle-ci !! Link to comment Share on other sites More sharing options...
pedrosystem Posted December 1, 2011 Author Share Posted December 1, 2011 Personne ne peux m'aider !! je suis bloqué Link to comment Share on other sites More sharing options...
Sbizz Posted December 2, 2011 Share Posted December 2, 2011 T'entends quoi par "il laisse le menu tel quel" ? Si il n'y a pas de sous catégorie, il affiche les catégories de même profondeur (la profondeur c'est un peu le niveau de l'arborescence. L'accueil est de profondeur 0, ses sous catégorie de profondeur 1) ? Pour cela, il suffit de vérifier si ta requête te renvoie quelque chose. Si c'est le cas, alors y'a rien a changer, si ce n'est pas le cas, tu fais une seconde requête qui récupère les catégories ayant la même profondeur et la même catégorie parente que l'actuelle. PS: En anglais, profondeur = depth. Link to comment Share on other sites More sharing options...
houssemess Posted December 2, 2011 Share Posted December 2, 2011 salut moi aussi je suis bloqué comme votre cas (( Link to comment Share on other sites More sharing options...
pedrosystem Posted December 5, 2011 Author Share Posted December 5, 2011 le problème est résolu j'ai acheté un module à 40€ http://www.nethercot...categories.html . et Maintenant j'ai obtenu le résultat souhaité. 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