Как вывести такое дерево категорий?
Есть категории и подкатегории по примеру ниже.
Сейчас выводятся все дерево категорий
---------------
#Мышки
##серые
###Мелкие
###Крупные
##белые
##фиолетовые
#Тапочки
##серые
##белые
##Фиолетовые
-----------------------------------------------------------
Как я хочу.
Если я на главной странице, например, то выводится всё категории без вложенных подкатегорий, то есть так:
---------------
#Мышки
#Тапочки
---------------
Если я перешла в категорию #мышки, то #тапочки исчезают, а вложенные подкатегории #МЫШЕК появляются и выглядит это так:
---------------
#Мышки
##Серые
##Белые
---------------
Если нахожусь в подкатегории ##Серые то меню выглядит так.
----------------
#Мышки
##Серые
###Мелкие
###Крупные
----------------
Как видно подкатегория ##Белые пропала.
-----------------
И ТАК ДАЛЕЕ
Проще говоря, мне нужно чтобы выводилось только то дерево категорий в котором сейчас находишься, и чтоб раскрывалась та вложенность в которой находишься, ничего больше.
Прошу прощения за такие примеры и такое длинное объяснение, не знаю как это называется, так что попыталась объяснить как смогла.
Спасибо за ответ!
9 ответов
{wa_print_tree}
посмотрите параметр depth и примеры с ним
Я смотрела это всё. Там нет примера где категория #аксессуары исчезает! А мне надо чтобы лишнего не отображалось, только то что активно
Проще это реализовать с крошками и функцией вывода подкатегорий, но это не выход, может есть нормальное решение?
ап!
>>> Если я перешла в категорию #мышки, то #тапочки исчезают, а вложенные подкатегории #МЫШЕК появляются
Как после этого вернуться в #тапочки, если они исчезают?
Выше всех категорий должна быть ссылка, все категории.
Здесь именно такая навигация.
Я сделала с помощью Крошек и функции перечисления подкатегорий.
http://www.houzz.com/photos/decorative-accents
Кажется, так (вместо wa_print_tree):
{$path = []}
{if isset($category)}
{$path[] = $category.id}
{if $category.parent_id}
{$parent = $wa->shop->category($category.parent_id)}
{$_r = array_unshift($path, $parent.id)}
{while $parent.parent_id}
{$parent = $wa->shop->category($parent.parent_id)}
{$_r = array_unshift($path, $parent.id)}
{/while}
{/if}
{/if}
{function tree level=0}
<ul{if $level == 0 && isset($class)} class="{$class}"{/if}>
{foreach $items as $item}
{if (!$category.id|default:null && $item.parent_id == 0)
|| (in_array($item.id, $path) || $item.parent_id == end($path))}
<li>
<a href="{$item.url}" {if $category.id|default:null == $item.id} class="bold"{/if}>{$item.name|escape}</a>
{if $item.childs|default:[] && in_array($item.id, $path)}
{tree items=$item.childs level=$level+1}
{/if}
</li>
{/if}
{/foreach}
</ul>
{/function}
{tree items=$wa->shop->categories(0, null, true) class='some-menu-class'}
Михаил, подскажите пожалуйста, а как в этом коде все таки оставить "#тапочки"?
Мне как раз нужно, чтобы "#тапочки" не исчезали. Т.е. при заходе в самую крайнюю подподкатегорию (у меня 3-я вложенность - категория/подкатегория/подподкатегория) соседние подподкатегории не исчезали.
В общем, нужно ровно такое меню, как на lamoda.ru :)