Активная категория

Пожалуйста помогите чайнику)))
При помощи этого кода у меня выводятся все категории в теме custom.
Показаны, например, 2 категории, но при нажатии на любую, во первых под основной категорией выходят подкатегории, и плюс при нажатии на подкатегорию, что бы выделялся стиль, который будет информировать пользователя о том что он находится в этой категории))) Все это замечательно работает в этом коде.

<!-- category tree -->
{if isset($category)}{$selected_category=$category.id}{else}{$selected_category=null}{/if}
{wa_print_tree tree=$wa->shop->categories(0, null, true) selected=$selected_category unfolded=false class="menu-v category-tree" elem =':name'}

НО
я хочу выводить только некоторые категории.

{foreach from=$wa->shop->categories() item=i}
{if $i.id == 1510 || $i.id == 1504} {$i.name}{/if}{/foreach}

При таком коде, я получаю именно те категории, которые хочу видеть, я понимаю, что можно просто скрыть категории которые я не хочу показывать, дело в другом. Хочу в разных местах выводить разные категории) НО СУКА! что бы они светились)))) и подсказывали людям, что ты нажал на эту категорию, и ты находишься в ней)))

1 ответ

  • 1
    Леонид Вакуленко 31 октября 2013 02:36 #
    Можно подготовить массив категорий. оставив там только то, что нужно, а потом скормить его в wa_print_tree. Что-то вроде:

    ----------------------------------------------------------------------------------
    {$cats = []}
    {foreach $wa->shop->categories() as $cat}
    {if in_array($cat.id, [1510, 1504])}
    {$cats[$cat.id] = $cat}
    {/if}
    {/foreach}

    {$selected_category = ifset($category.id)}
    {wa_print_tree tree=$cats selected=$selected_category unfolded=false class="menu-v category-tree" elem =':name'}
    ----------------------------------------------------------------------------------

    А можно просто нарисовать тот же самый несчастный плоский <ul> прямо на месте без всяких выкрутасов:

    ----------------------------------------------------------------------------------
    <ul class="menu-v category-tree">
    {foreach $wa->shop->categories() as $cat}
    {if in_array($cat.id, [1510, 1504])}
    <li {if !empty($category.id) && $category.id == $cat.id} class="selected"{/if}>{$cat.name|escape}</li>
    {/if}
    {/foreach}
    </ul>
    ----------------------------------------------------------------------------------

    Второй вариант короче и понятнее. Но если надо что-то более сложное (например, развернуть текущую категорию и показать дерево), то первый вариант это сумеет с минимумом изменений, а второй быстро превратится в кошмарный ужас.

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

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