Как вывести дерево категорий исключив некоторые категории?

Стандартный вывод категорий подразумевает вывод ВСЕХ категорий подряд.

Например, получаем массив всех категорий в переменную $categories.
{$categories = $wa->shop->categories()}

Строим дерево категорий функцией wa_print_tree исходя из содержимого массива $categories.
{wa_print_tree tree=$categories elem=':name'}

Но я бы хотел построить дерево категорий только из тех категорий, у которых в дополнительных параметрах указана пара ключ-значение "menu=1".

Каким образом можно это сделать?

4 ответа

  • 0
    B2ron 15 октября 2014 06:47 #
    Для себя нашел следующий вариант (но он очень медленно работает):

    {function mymenu}
    <ul>
    {foreach $categories as $cat}

    {$cat_id = $wa->shop->category($cat.id)}
    {if $cat_id.params.menu eq 1}

    <li>
    <a href="{$cat.url}">{$cat.name}</a>
    <ul>
    {mymenu}
    </ul>
    </li>

    {/if}

    {/foreach}
    </ul>
    {/function}
    {mymenu categories=$wa->shop->categories()}
  • 1
    Присоединяюсь к вопросу. Очень медлено не подойдет (
  • -4
    http://forum.webasyst.ru/viewtopic.php?id=18605
  • 1

    Пробовал такую конструкцию:

    {foreach $wa->shop->categories() as $category}
    <li><a href="#">{$category.name|escape}</a></li>
    {/foreach}

    Выводит просто списком категории. Взял из шпаргалки:

    {foreach $wa->shop->categories($id = 0, $depth = null, $tree = false, $params = false, $route = null) as $category}
    <li><a href="#">{$category.name|escape}</a></li>
    {/foreach}

    Выдает ошибку. Сейчас разбираюсь только с синтаксисом. Как найду решение, сообщу. По логике:

    {foreach $wa->shop->categories() as $category}
    {if $category.id=212}
    {else}
    <li><a href="#">{$category.name|escape}</a></li>
    {/if}
    {/foreach}

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

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