Сделал, так (если кому нужно)
blockcategories.tpl
Код:
{foreach from=$blockCategTree.children item=child name=blockCategTree}
{if $smarty.foreach.blockCategTree.last}
{include file=$branche_tpl_path node=$child last='true'[B] links=$child.children parent=$child.id[/B]}
{else}
{include file=$branche_tpl_path [B]node=$child links=$child.children parent=$child.id[/B]}
{/if}
{/foreach}
category-tree-banch.tpl
Если категория - есть подкатегорией или родительской
Код:
{foreach from=$links item=allCategories name=allCategories}
{if $currentCategoryId == $allCategories.id || $currentCategoryId==$parent}
{assign var='path' value="true"}
{/if}
{/foreach}
И если нет - то все прячем
Код:
{if $path!="true"}
<span class="show_item">
{/if}
Вообщем файл
category-tree-branch.tpl
Код:
<li {if $last == 'true'}class="last"{/if}>
<a href="{$node.link|escape:html:'UTF-8'}" {if $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=$links item=allCategories name=allCategories}
{if $currentCategoryId == $allCategories.id || $currentCategoryId==$parent}
{assign var='path' value="true"}
{/if}
{/foreach}
{if $path!="true"}
<span class="show_item">
{/if}
{foreach from=$node.children item=child name=categoryTreeBranch}
{if $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}
{if $path!="true"}
</span>
{/if}
</ul>
{/if}
</li>