Как вывести такое дерево категорий?

Есть категории и подкатегории по примеру ниже.

Сейчас выводятся все дерево категорий

---------------

#Мышки

##серые

###Мелкие

###Крупные

##белые

##фиолетовые

#Тапочки

##серые

##белые

##Фиолетовые

-----------------------------------------------------------

Как я хочу.

Если я на главной странице, например, то выводится всё категории без вложенных подкатегорий, то есть так:

---------------

#Мышки

#Тапочки

---------------

Если я перешла в категорию #мышки, то #тапочки исчезают, а вложенные подкатегории #МЫШЕК появляются и выглядит это так:

---------------

#Мышки

##Серые

##Белые

---------------

Если нахожусь в подкатегории ##Серые то меню выглядит так.

----------------

#Мышки

##Серые

###Мелкие

###Крупные

----------------

Как видно подкатегория ##Белые пропала.

-----------------

И ТАК ДАЛЕЕ

Проще говоря, мне нужно чтобы выводилось только то дерево категорий в котором сейчас находишься, и чтоб раскрывалась та вложенность в которой находишься, ничего больше.


Прошу прощения за такие примеры и такое длинное объяснение, не знаю как это называется, так что попыталась объяснить как смогла.

Спасибо за ответ!

4 ответа

  • 1

    >>> Если я перешла в категорию #мышки, то #тапочки исчезают, а вложенные подкатегории #МЫШЕК появляются

    Как после этого вернуться в #тапочки, если они исчезают?

    • +1
      Zcorpx Zcorpx 15 июня 2015 04:10 #

      Выше всех категорий должна быть ссылка, все категории.

      Здесь именно такая навигация.

      Я сделала с помощью Крошек и функции перечисления подкатегорий.

      http://www.houzz.com/photos/decorative-accents

  • 1

    Кажется, так (вместо 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'}

    • +1
      Константин Егоров Константин Егоров 20 июня 2015 17:13 #

      Михаил, подскажите пожалуйста, а как в этом коде все таки оставить "#тапочки"?

      Мне как раз нужно, чтобы "#тапочки" не исчезали. Т.е. при заходе в самую крайнюю подподкатегорию (у меня 3-я вложенность - категория/подкатегория/подподкатегория) соседние подподкатегории не исчезали.

  • 0

    {wa_print_tree}

    посмотрите параметр depth и примеры с ним


    • +2
      Zcorpx Zcorpx 10 февраля 2015 08:57 #

      Я смотрела это всё. Там нет примера где категория #аксессуары исчезает! А мне надо чтобы лишнего не отображалось, только то что активно

    • +2
      Zcorpx Zcorpx 10 февраля 2015 09:17 #

      Проще это реализовать с крошками и функцией вывода подкатегорий, но это не выход, может есть нормальное решение?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите