Ma problématique est la suivante : dans mon site, 1catégorie = 1 produit.
Je dois donc modifier le comportement par défaut de ma page include/menu.html
La solution c'est un count sur la boucle category-tree
Je mets le code qui va bien :
{loop name="cat-parent-$level" type="category" parent=$parent need_count_child="1" not_empty="1"}
{if $CHILD_COUNT > 0}
{if in_array($ID, $parent_cat_ids)}
{assign var="collapsed" value=""}
{else}
{assign var="collapsed" value="collapsed"}
{/if}
<li>
<a href="{$URL nofilter}">
{$TITLE}
{* item de menu parent *}
{if $PARENT == 0}
{* Si 2 niveaux *}
{if {count type="product" category=$ID depth=2} > 0}
{$CHILD_COUNT}
{else}
{* Si 3 niveaux *}
{* On compte les sous-catégories (rappel : ici une catégorie = 1 produit) *}
{* On exclut l'item de menu parent pour afficher la somme des sous-catégories du menu *}
({{count type="category-tree" category=$ID depth="3"} - {$CHILD_COUNT}})
{/if}
{* item de menu enfant *}
{else}
({$CHILD_COUNT})
{/if}
</a>
{* N'affiche dans le menu déroulant que les categories avec 2 sous-niveaux *}
{if {count type="product" category=$ID depth=2} == 0}
<a href="#collapse{$ID}" class="accordion-toggle {$collapsed}" data-toggle="collapse" data-parent="#collapse{$ID}"></a>
{menu parent=$ID level=$level+1}{/if}
</li>
{else}
<li>
<a href="{$URL nofilter}">
{$TITLE} {$CHILD_COUNT}
</a>
</li>
{/if}
{/loop}
Ça fonctionne, mais je me demande s'il y a une solution plus 'naturelle'...
Last edited by anti-conformiste (20-09-2018 19:29:40)