Jump to content
ben5back

Supprimer sous sous catégories dans le menu

Recommended Posts

Bonjour,

 

J'aimerais supprimer les sous sous catégories du menu blockcategories mais en gardant les sous catégories. J'ai essayé en éditant category-tree-branch.tpl mais soit je supprime tout, soit rien...

 

<li {if isset($last) && $last == 'true'}class="last"{/if}>
<a href="{$node.link}" {if isset($currentCategoryId) && ($node.id == $currentCategoryId)}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>
{if $node.children|@count > 0}
 <ul>
 {foreach from=$node.children item=child name=categoryTreeBranch}
  {if isset($smarty.foreach.categoryTreeBranch) && $smarty.foreach.categoryTreeBranch.last}
{include file="$branche_tpl_path" node=$child last='true'}
  {else}
{include file="$branche_tpl_path" node=$child last='false'}
  {/if}
 {/foreach}
 </ul>
{/if}
</li>

 

Merci d'avance ;)

Share this post


Link to post
Share on other sites

hello,

essaye en remplaçant

{if $smarty.foreach.categoryTreeBranch.last}
   {include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}
{else}
   {include file="$tpl_dir./category-tree-branch.tpl" node=$child last='false'}
{/if}

par juste

{include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}

a priori, il ne devrait boucler qu'une fois, sinon, il va falloir conditionner la boucle à l'index du node, un petit coup de smarty devrait le faire :)

 

have swing

Share this post


Link to post
Share on other sites

Merci pour ta réponse. J'avais justement essayé ça mais ça ne change absolument rien.. :mellow:

 

Conditionner la boucle à l'index du node ? Avec smarty ? J'avoue être perdu là :wacko:

Share this post


Link to post
Share on other sites

:) et bien, plusieurs possibilités en fait

le premier truc que je ferais serait un print_r de $node et de $node.children

{$node|@print_r} //ou {$node|@debug_print_var} grosso modo la même

et la même pour $node.children

histoire de voir comment se présente le tableau, il doit bien y avoir une valeur qui permettrait d'ajouter une condition à

{if $node.children|@count > 0}

pour arrêter la boucle au niveau que tu souhaites

 

dommage que je n'ai pas un site installé qui utilise ce truc de catégories j'aurais pu essayer, jette un oeil aux deux print_r, node et node.children histoire qu'on voit comment ça cause :)

 

have swing

Share this post


Link to post
Share on other sites

Merci pour toutes ces infos ;)

 

Alors voilà ce que renvoi les print_r :

 

{$node|@print_r} : (j'ai mis qu'une partie ;))

 

Array
(
[id] => 10
[link] => http://www...
[name] => Categorie 1
[desc] =>
[children] => Array
	(
		[0] => Array
			(
				[id] => 26
				[link] => http://www...
				[name] => Sous Categorie 1
				[desc] =>
				[children] => Array
					(
						[0] => Array
							(
								[id] => 34
								[link] => http://www...
								[name] => Sous Sous Categorie 1
								[desc] =>
								[children] => Array
									(
									)

							)

						[1] => Array
							(
								[id] => 44
								[link] => http://www...
								[name] => Sous Sous Categorie 2
								[desc] =>
								[children] => Array
									(
									)

							)

						[2] => Array
							(
								[id] => 45
								[link] => http://www...
								[name] => Sous Sous Categorie 3
								[desc] =>
								[children] => Array
									(
									)

							)

 

 

{$node.children|@print_r} :

 

Array
(
[0] => Array
	(
		[id] => 26
		[link] => http://www...
		[name] => Sous Categorie 1
		[desc] =>
		[children] => Array
			(
				[0] => Array
					(
						[id] => 34
						[link] => http://www...
						[name] => Sous Sous Categorie 1
						[desc] =>
						[children] => Array
							(
							)

					)

				[1] => Array
					(
						[id] => 44
						[link] => http://www...
						[name] => Sous Sous Categorie 2
						[desc] =>
						[children] => Array
							(
							)

					)

				[2] => Array
					(
						[id] => 45
						[link] => http://www...
						[name] => Sous Sous Categorie 3
						[desc] =>
						[children] => Array
							(
							)

					)

Share this post


Link to post
Share on other sites

too bad, pas de niveau, bon, ben on peut commencer par essayer un truc de sauvage, ça va peut-être marcher

{counter start=0 skip=1}
<li {if isset($last) && $last == 'true'}class="last"{/if}>
   <a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a>
   {if $node.children|@count > 0 && counter <= 1}
   {counter}
       <ul>
       {foreach from=$node.children item=child name=categoryTreeBranch}
           {if $smarty.foreach.categoryTreeBranch.last}
               {include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}
           {else}
               {include file="$tpl_dir./category-tree-branch.tpl" node=$child last='false'}
           {/if}
       {/foreach}
       </ul>
   {/if}
</li>

 

en gros ça équivaut à tenter un truc genre $i = 0, l'incrémenter au passage du if et mettre comme condition qu'il ne soit pas supérieur à 1 pour boucler, essaye, on va voir (et il n'y a pas de risque :))

 

have swing

Share this post


Link to post
Share on other sites

Arf marche pas. Ça ne change rien, ça ne fait qu'ajouter un 0 sous les catégories et un 1 puis un 0 sous les catégories qui ont des sous catégories.

 

Ca signifie quoi ?

Share this post


Link to post
Share on other sites

ah zut, andouille que je suis, counter est fait pour l'affichage, bon, faut que je regarde comment faire ++ mais avec un assign var, je regarde ça et je reviens vers toi, fun comme petit problème (en attendant tu peux enlever counter partout... :))

 

have swing

Share this post


Link to post
Share on other sites

tiens, une idée au passage, assigner une variable qui n'existe pas avant la première boucle et ne pas boucler si elle existe

<li {if isset($last) && $last == 'true'}class="last"{/if}>
<a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a>
{if $node.children|@count > 0 && !isset($premiereboucle)}
{assign var="premiereboucle" value="done"}
	<ul>
	{foreach from=$node.children item=child name=categoryTreeBranch}
		{if $smarty.foreach.categoryTreeBranch.last}
			{include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}
		{else}
			{include file="$tpl_dir./category-tree-branch.tpl" node=$child last='false'}
		{/if}
	{/foreach}
	</ul>
{/if}
</li>

 

ça peut marcher avant de trouver comment faire un assign d'une opération math equation dans une variable :))

 

have swing

Share this post


Link to post
Share on other sites

Non, ça ne change absolument rien :mellow:

 

Pourtant ça me paraissait logique comme méthode, il m'est déjà arrivé de la faire en php. Bizarre...

 

Merci en tout cas de consacrer de ton temps pour me filer un coup de main, c'est cool :)

Share this post


Link to post
Share on other sites

hello,

my pleasure, j'aime bien me battre avec ce genre de truc

trouvé... et mis le doigt sur un petit défaut du bébé...

la solution est bel et bien

<li {if isset($last) && $last == 'true'}class="last"{/if}>


<a href="{$node.link}" {if isset($currentCategoryId) && ($node.id == $currentCategoryId)}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>
{if $node.children|@count > 0 && !isset($toto)}
{assign var='toto' value='1'}
	<ul>
	{foreach from=$node.children item=child name=categoryTreeBranch}
		{if isset($smarty.foreach.categoryTreeBranch) && $smarty.foreach.categoryTreeBranch.last}
			{include file="$branche_tpl_path" node=$child last='true'}
		{else}
			{include file="$branche_tpl_path" node=$child last='false'}
		{/if}
	{/foreach}
	</ul>
{/if}
</li>

mais il faut le faire dans le tpl qui est dans le dossier modules blockcategories de presta

 

en fait, le truc est que au dessus de ce fichier, il y a blockcategories;tpl qui include le tree_branch

ce qui est mal foutu dans l'histoire est que

- si tu crées un dossier modules dans ton thème dans lequel tu mets ces deux fichiers, ça plante...

- si tu mets blockcategories.tpl à la racine du thème comme c'est le cas pour tree_branch, il s'en tape royal en ne va pas le chercher

en gros, ce module n'est pas écrit correctement puisque sont fichier tree_branch accepte qque modifs à la racine du thème au lieu d'être dans le dossier themes/tontheme/module/blockcategories comme le fonte les autres mais ça ne le fait que pour un template sur deux !!!

 

fais la modif dans le dossier racine modules/blockcategories et ça baigne...

(ça me parraissait étrange qu'un truc aussi bêtement logique ne fonctionne pas, comme tu dis, c'est un truc qu'on fait en php et smarty n'est qu'une surcouche de php donc...)

 

ouf :)

 

have swing

  • Like 1

Share this post


Link to post
Share on other sites

Ha !!! Super ! T'es un chef ! Ça fonctionne nickel ! :D

 

Merci beaucoup pour ton aide et tes explications :)

 

;)

Share this post


Link to post
Share on other sites

alors moi je souhaiterais afficher que la categorie en cours avec ses sous categorie

 

c'est a dire les "span open" et non les "span closer"

 

j'ai pas tres bien comprsi le {$node|@print_r}

ou peut on le mettre car j'ai essayé mais il n'accepte les crochets

Share this post


Link to post
Share on other sites

alors moi je souhaiterais afficher que la categorie en cours avec ses sous categorie

 

c'est a dire les "span open" et non les "span closer"

 

j'ai pas tres bien comprsi le {$node|@print_r}

ou peut on le mettre car j'ai essayé mais iln'accepte les crochets

 

Hello !

As tu trouvé une solution ? Je cherche exactement a faire la même chose !

Que le bloc catégorie ne présente que tu sous-cat, de la catégorie actuelle. (Donc mon bloc catégorie n'apparait pas sur la page d'accueil)

 

Merci !

Share this post


Link to post
Share on other sites

Bonjour à tous, j'aimerais faire la meme chose que Ben5Back mais sur 1.5 ... quelqu'un saurait m'aider svp?? Merci à vous !

Share this post


Link to post
Share on other sites

Excusez moi pour ce message inutile, après plusieurs jours de recherche, j'ai trouvé !

 

j'ai juste mi mon #categories_block_left li ul li a{} en "display: none " dans mon global css.

 

Il semble que ca n'althère pas le reste du site..

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More