Помощь Вывод категорий и подкатегорий

karakym

Создатель
Регистрация
13 Июл 2012
Сообщения
36
Реакции
7
Доброго времени суток, в шаблоне симплы в сайдбаре есть вывод категорий:
Код:
{* Навигация *}
{$first_category = $category->path}
{if $first_category->id == $c->id}
{else}
<div class="pb">
    <div class="block">
        <div class="leftcat">
        {if $category->subcategories}
            {$cats=$category->subcategories}
        {elseif $category->parent_id==0}
            {$cats=$categories}
        {else}
            {$cats=$category->path[($category->path)|count-2]->subcategories}
        {/if}
        {foreach $cats as $c}
            <a href="catalog/{$c->url}" {if $category->id == $c->id}class="selected"{/if}>{$c->name|escape}</a>
        {/foreach}
        </div>
    </div>
</div>
{/if}
{* END Навигация *}
Так вот нужно что бы подкатегорию выводило под основной категорией и еще если зайти в категорию и в ней нет подкатегорий, то в сайдабре выводяться все категории, а вот если есть подкатегория то выводиться только она одна, как сделать что бы везде выводило и категории и под ними их подкатегории если они есть?
 
Нашел решение в другом шаблоне:

Код:
<div class="pb"><div class="block"><div class="leftcat">
{function name=categories_tree}
    {if $categories}
        {foreach $categories as $c}
            {if $c->visible}
                <a href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a>
                {if in_array($category->id, $c->children)}{categories_tree categories=$c->subcategories}{/if}
            {/if}
        {/foreach}       
    {/if}
{/function}
    {categories_tree categories=$categories}
</div></div></div>
Но теперь проблема в том, что бы "засветить" блок подкатегории.
Не могу сделать проверку типа:
Код:
{if in_array($category->id, $c->children)}style="background:red;"{/if}
стиль применяется для родителя, а не для подкатегории.
 
может тут больше верстка или css у вас не так? а если заверстать в виде

<ul>
<li>категория 1</li>
<li>категория 2
<ul>
<li>под категория 3</li>
</ul>
</li>
</ul>

и задать в css стили! если вам надо на категориях задать стиль то
{function name=categories_tree}
{foreach $categories as $c}
{if in_array($category->id, $c->children)}style="background:red;"{/if}
{/foreach}
{/function}

верное решение будет! или можно индивидуально для каждого по ID каткгории
{if $c->id}стиль {/if} - это тоже в форече
 
может тут больше верстка или css у вас не так? а если заверстать в виде



и задать в css стили! если вам надо на категориях задать стиль то


верное решение будет! или можно индивидуально для каждого по ID каткгории
{if $c->id}стиль {/if} - это тоже в форече
Да конечно верное решение будет изменение стилей, но мне крайне важно что бы стили и блоки оставались такими же.
Просто внутри добавить проверку, если блок является подкатегорией то применить стиль
 
Нашел решение, в стандартном шаблоне, но вот теперь подкатегории отображаются только если перейти на категорию
 
Неужели никто не сталкивался?
 
Я смутно понял что хочется, но проверка на наличии у категорий делается вот так
{if $category->children}тут код если у категории есть подкатегории{else}а тут если нету{/if}
и от этого плясать уже

единственный момент - не учитывается активность категорий, т.е. если категории есть и отключены, то все равно условие сработает, это можно обойти конечно, но нужно гораздо реже.
 
Назад
Сверху