ben5back Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
ben5back Posted September 13, 2011 Author Share Posted September 13, 2011 Merci pour ta réponse. J'avais justement essayé ça mais ça ne change absolument rien.. Conditionner la boucle à l'index du node ? Avec smarty ? J'avoue être perdu là Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
ben5back Posted September 13, 2011 Author Share Posted September 13, 2011 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 ( ) ) Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
ben5back Posted September 13, 2011 Author Share Posted September 13, 2011 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 ? Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 13, 2011 Share Posted September 13, 2011 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 Link to comment Share on other sites More sharing options...
ben5back Posted September 13, 2011 Author Share Posted September 13, 2011 Non, ça ne change absolument rien 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 Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 14, 2011 Share Posted September 14, 2011 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 1 Link to comment Share on other sites More sharing options...
ben5back Posted September 14, 2011 Author Share Posted September 14, 2011 Ha !!! Super ! T'es un chef ! Ça fonctionne nickel ! Merci beaucoup pour ton aide et tes explications Link to comment Share on other sites More sharing options...
virtualgadjo Posted September 14, 2011 Share Posted September 14, 2011 my pleasure (je me suis installé un prestashop spécial bricole pour le cas où ) have swing Link to comment Share on other sites More sharing options...
ultraxa Posted October 25, 2011 Share Posted October 25, 2011 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 Link to comment Share on other sites More sharing options...
Szed Posted February 21, 2012 Share Posted February 21, 2012 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 ! Link to comment Share on other sites More sharing options...
stevent Posted October 11, 2013 Share Posted October 11, 2013 Bonjour à tous, j'aimerais faire la meme chose que Ben5Back mais sur 1.5 ... quelqu'un saurait m'aider svp?? Merci à vous ! Link to comment Share on other sites More sharing options...
stevent Posted October 11, 2013 Share Posted October 11, 2013 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.. 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