Все правильно в цикле
{foreach from=$nodes item=node}
{if $node.id == 13}
тут разделитель блоков категорий, выводите все под-категории для категории с id 13.
В общем всем спасибо, я посидел немного и разобрался в логике шаблона.
Распишу, может кому-то пригодится. Как я и говорил, мне на место этого $nodes, нужно подсунуть $node, id которого равен 13. Оставляем главную функцию без изменений. Она принимает исходный массив, обрабатывает и возвращает список категорий, которые нам нужны в то место, из которого мы ее вызываем.
{function name="categories" nodes=[] depth=0}
{strip}
{if $nodes|count}
{foreach from=$nodes item=node}
<li>
{if $page.page_name == 'product'}
<a href="{$node.link}" {if $node.id == $product.id_category_default}class="selected"{/if}>
{$node.name}
</a>
{else}
<a href="{$node.link}" {if $page.page_name == 'category'}{if $node.id == $category.id}class="selected"{/if}{/if}>
{$node.name}
</a>
{/if}
{if $node.children}
<ul>
{categories nodes=$node.children depth=$depth+1}
</ul>
{/if}
</li>
{/foreach}
{/if}
{/strip}
{/function}
Далее вместо стандартного блока категорий, который отправляет на функцию родительскую категорию:
<div class="block-categories block">
{* AngarTheme *}
<div class="h6 text-uppercase facet-label">
<a href="{$categories.link nofilter}" title="{l s='Categories' d='Shop.Theme.Catalog'}">{if $page.page_name == 'index'}{l s='Categories' d='Shop.Theme.Catalog'}{else}{$categories.name}{/if}</a>
</div>
<div class="block_content">
<ul class="tree dhtml">
{categories nodes=$categories.children}
</ul>
</div>
</div>
Мы пишем свои блоки (Столько сколько нужно)
<div class="block-categories block">
{* AngarTheme *}
<div class="h6 text-uppercase facet-label">
<a href="{$a_.link nofilter}" title="{$a_.name}">{$a_.name}</a>
</div>
<div class="block_content">
<ul class="tree dhtml">
{categories nodes=$a_.children}
</ul>
</div>
</div>
<div class="block-categories block">
{* AngarTheme *}
<div class="h6 text-uppercase facet-label">
<a href="{$b_.link nofilter}" title="{$b_.name}">{$b_.name}</a>
</div>
<div class="block_content">
<ul class="tree dhtml">
{categories nodes=$b_.children}
</ul>
</div>
</div>
В которых я уже вместо $categories поставил $a_ и $b_, которые будут у нас категориями, под-категории которых мы хотим выводить. И далее просто добавляем функцию (выше этих блоков по тексту), которая будет вытаскивать эти категории из массива $categories.
{$a_=[]}{$b_=[]}{$f_=$categories.children}
{if $f_|count}
{foreach from=$f_ item=node_}
{if $node_.id ==13}
{$a_=$node_}
{/if}
{if $node_.id ==25}
{$b_=$node_}
{/if}
{/foreach}
{/if}
Где 13 и 25 - id категорий, под-категории которых мы хотим выводить в блоках. Я в синтаксисе не разбираюсь, просто сделал по аналогии с первой функцией, возможно можно было сделать правильнее и проще. Может вообще эта функция не нужна, и из родительского массива можно как-то выдернуть нужную нам категорию напрямую используя id.
Можно также унифицировать. Если кому-то надо выводить все категории, являющиеся прямыми потомками главной, блоками. Вот решение еще проще. Верхнюю функцию также не трогаем, а блок для вывода категорий помещаем в цикл:
{if $categories.children|count}
{foreach from=$categories.children item=node_}
{if $node_.children}
<div class="block-categories block">
{* AngarTheme *}
<div class="h6 text-uppercase facet-label">
<a href="{$node_.link nofilter}" title="{$node_.name}">{$node_.name}</a>
</div>
<div class="block_content">
<ul class="tree dhtml">
{categories nodes=$node_.children}
</ul>
</div>
</div>
{/if}
{/foreach}
{/if}
Если какую-то категорию не хотим выводить блоком, ставим внутрь цикла: {if $node_.id !=10}, где 10 айди вашей категории.
И все, не надо клонировать никакие модули и прочее. Может кому-то пригодиться.