hulaup Posted July 3, 2015 Share Posted July 3, 2015 Bonjour, je cherche le moyen de ne faire apparître que 2 niveaux d'aborescence dans le menu horizontal du haut (blocktopmenu) et ne supprimer les ">" devant chaque rubrique. Merci d'avance. Link to comment Share on other sites More sharing options...
LIJE Creative Posted July 7, 2015 Share Posted July 7, 2015 Bonjour, http://www.lije-creative.com/prestashop-limiter-arborescence-menu/ Bonne lecture 1 Link to comment Share on other sites More sharing options...
Onices Posted July 8, 2015 Share Posted July 8, 2015 Up du post car j'aimerai un complémént Est il possible de faire apparaître uniquement les catégories de niveau 1 et 2 et au survole que les sous catégories 3, 5,6 apparaissent ? Link to comment Share on other sites More sharing options...
hulaup Posted July 8, 2015 Author Share Posted July 8, 2015 Merci onices. C'est exactement ça. Je me doutais qu'il y avait un truc dans le fichier php mais je n'ai pas trouvé.... faut dire qu'il est fourni et assez peu commenté ! Merci encore Link to comment Share on other sites More sharing options...
LIJE Creative Posted July 8, 2015 Share Posted July 8, 2015 De rien Onices, pour afficher ce que tu souhaites dans ton menu, tu dois faire une condition sur le $category['level_depth'] Link to comment Share on other sites More sharing options...
hulaup Posted July 8, 2015 Author Share Posted July 8, 2015 Le code se présente comme cela : private function generateCategoriesMenu($categories, $is_children = 0) { $html = ''; foreach ($categories as $key => $category) { if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = Tools::HtmlEntitiesUTF8($cat->getLink()); } else $link = $this->context->link->getPageLink('index'); $html .= '<li'.(($this->page_name == 'category' && (int)Tools::getValue('id_category') == (int)$category['id_category']) ? ' class="sfHoverForce"' : '').'>'; $html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>'; j'ai juste un petit pb pour insérer le "return false" Link to comment Share on other sites More sharing options...
Onices Posted July 8, 2015 Share Posted July 8, 2015 Et en passant simplement par le css à base hover ce ne serait pas possible ? Une solution vue dans un autre post propose ceci mais avec un display:none et bloque l'affichage au catégories de niveau supérieur à 1 et 2. https://www.prestashop.com/forums/topic/324354-cacher-sous-cat%C3%A9gories-menu-haut-horizontal/?do=findComment&comment=1641798 https://www.prestashop.com/forums/topic/320254-r%C3%A9soluliens-des-sous-sous-cat%C3%A9gories-barre-de-nav-presta-1605/ Désole mon niveau ne me permet d'aller plus loin dans l'écriture des modification. Link to comment Share on other sites More sharing options...
LIJE Creative Posted July 8, 2015 Share Posted July 8, 2015 Montre nous une capture de ton menu actuel et de ce que tu souhaites. Il y a toujours la solution en CSS oui. Mais ça ne supprime pas les liens, ça les cache. C'est plus facile mais moins bien. Juste avant la condition if ($category['level_depth'] > 1) tu définis si c'est un niveau n, alors tu ne l'affiches pas, genre : if ($category['level_depth'] == 5 || $category['level_depth'] == 7) return false; 1 Link to comment Share on other sites More sharing options...
Onices Posted July 8, 2015 Share Posted July 8, 2015 Enfaîte j'ai des sous catégories allants jusqu'au niveau 5 catA catA1 catA11 catA111 catA111a catA111b catA111c La catA correspond à la première sur le menu, ensuite j'aimerai que les catégories suivante s'affiche au survole de la catégorie parente. Sur le principe d'un menu déroulant mais en gardant celui de 1.6 de base Link to comment Share on other sites More sharing options...
hulaup Posted July 8, 2015 Author Share Posted July 8, 2015 j'ai intégré comme ceci : private function generateCategoriesMenu($categories, $is_children = 0) { $html = ''; foreach ($categories as $key => $category) { if ($category['level_depth'] <= 3) return false; if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = Tools::HtmlEntitiesUTF8($cat->getLink()); } else $link = $this->context->link->getPageLink('index'); $html .= '<li'.(($this->page_name == 'category' && (int)Tools::getValue('id_category') == (int)$category['id_category']) ? ' class="sfHoverForce"' : '').'>'; $html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>'; en fait j'ai même essayé en intégrant dans la boucle foreach : du style foreach ($categories as $key => $category) { Link to comment Share on other sites More sharing options...
hulaup Posted July 8, 2015 Author Share Posted July 8, 2015 désolé, je poursuis: du style foreach ($categories as $key => $category){ if ($category['level_depth'] <= 3) { if ($category['level_depth'] > 1) { tout le code } } } ma condition est ingrorée.... Link to comment Share on other sites More sharing options...
LIJE Creative Posted July 8, 2015 Share Posted July 8, 2015 Ok, la problématique n'est pas la même car vous ne souhaitez pas limiter l'arborescence du menu mais en modifier son affichage au passage de la souris. Quel est l'intérêt de faire ça ? Je présume qu'il faudrait créer un nouveau sujet. Link to comment Share on other sites More sharing options...
Onices Posted July 13, 2015 Share Posted July 13, 2015 Oui effectivement il vaudrait mieux d'ouvrir un sujet spécifique. Mais pour le coup il est bien dommage que le menu prestashop soit si peu ergonomique et modifiable car après pas mal de recherche sur ce menu ces problèmes sont récurent et oblige à passer par des modules tiers. Merci en tout cas LijE Creative. Link to comment Share on other sites More sharing options...
hulaup Posted July 15, 2015 Author Share Posted July 15, 2015 Alors après beaucoup de recherches.... rien ne fonctionne. Même la solution proposée plus haut, dommage. La seule solution semble être de passer par du css ou comme le dit onice par un module tiers. Pour ma part avec le css de mon theme en modifiant le fichier : superfish-modified.css en rajoutant ceci à la ligne 192 : .sf-menu li li li ul { display:none !important;} voilà, c'est surement pas la solution la plus élégante mais ça fonctionne ! 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