Jump to content

Limiter arborescence top menu


Recommended Posts

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

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

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

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;
  • Like 1
Link to comment
Share on other sites

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

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

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

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

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

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
×
×
  • Create New...