Json Posted June 23, 2015 Report Share Posted June 23, 2015 Вывожу под категории так {foreach $category->subcategories as $sc} {if $sc->visible} <li> <div><a href="catalog/{$sc->url}" data-category="{$sc->id}">{$sc->name|escape}</a></div> </li> {/if} {/foreach} Задача стоит в том чтобы вывести категории верхнего уровня, если в под категории нет под категорий. {if $category->subcategories} {foreach $category->subcategories as $sc} ....... {/foreach} {else} -- выводим категории верхнего уровня, подскажите код -- {/if} Quote Link to post Share on other sites
mishanya Posted June 23, 2015 Report Share Posted June 23, 2015 {if $category->subcategories} {foreach $category->subcategories as $sc} {$sc->name} {/foreach} {else} {foreach $categories as $c} {$c->name} {/foreach} {/if} Quote Link to post Share on other sites
Json Posted June 24, 2015 Author Report Share Posted June 24, 2015 {if $category->subcategories} {foreach $category->subcategories as $sc} {$sc->name} {/foreach} {else} {foreach $categories as $c} {$c->name} {/foreach} {/if} он выводит категории самого верхнего уровня, а мне бы вывести эти же под категории, если нет подкатегорий что то вроде такого, но почему то не работает ( {foreach $categories as $c} {if $c->parent_id == $category->parent_id} <li> <div><a href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a></div> </li> {/if} {/foreach} Quote Link to post Share on other sites
mishanya Posted June 24, 2015 Report Share Posted June 24, 2015 вы хотите если у категории нет подкатегорий, выводить все категории что находяться на уровне с этой категорией? Quote Link to post Share on other sites
Noxter Posted June 24, 2015 Report Share Posted June 24, 2015 вы хотите если у категории нет подкатегорий, выводить все категории что находяться на уровне с этой категорией?Имеется в виду если он в подктегории (в которой уже нет дочерних категорий) то все равно вверху вывести эти подкатегории. Пример как я понял:Первая категория - подкатегория - подкатегория 2 - подкатегория 3Так вот если посетитель находиться скажем в категории 2 то вверху вывести блоки\ссылки на "категория", "категория 2" и "категория 3". Quote Link to post Share on other sites
mishanya Posted June 24, 2015 Report Share Posted June 24, 2015 (edited) {if $category->subcategories} {foreach $category->subcategories as $sc} {$sc->name} {/foreach} {else} {foreach $categories as $c} {if $category->parent_id==$c->id} {foreach $c->subcategories as $sc} {$sc->name} {/foreach} {/if} {/foreach} {/if} так? Edited June 24, 2015 by mishanya Quote Link to post Share on other sites
Kors Posted June 24, 2015 Report Share Posted June 24, 2015 Слишком примитивно. 1. Гоняется цикл ради одного элемента - очень нерационально.2. Так работает только в том случае, когда текущая категория (без подкатегорий) находится на втором уровне. А для 3-го и последующих - так не пойдет...3. Также не будет работать, если когда текущая категория (без подкатегорий) находится на самом верхнем уровне (parent_id=0). Quote Link to post Share on other sites
Json Posted June 24, 2015 Author Report Share Posted June 24, 2015 Имеется в виду если он в подктегории (в которой уже нет дочерних категорий) то все равно вверху вывести эти подкатегории.Пример как я понял:Так вот если посетитель находиться скажем в категории 2 то вверху вывести блоки\ссылки на "категория", "категория 2" и "категория 3".Верное я запутался с этими под категориями Quote Link to post Share on other sites
Json Posted June 24, 2015 Author Report Share Posted June 24, 2015 {if $category->subcategories} {foreach $category->subcategories as $sc} {$sc->name} {/foreach} {else} {foreach $categories as $c} {if $category->parent_id==$c->id} {foreach $c->subcategories as $sc} {$sc->name} {/foreach} {/if} {/foreach} {/if} так?Ага заработало, спасибо ) Quote Link to post Share on other sites
Json Posted June 24, 2015 Author Report Share Posted June 24, 2015 Слишком примитивно. 1. Гоняется цикл ради одного элемента - очень нерационально.2. Так работает только в том случае, когда текущая категория (без подкатегорий) находится на втором уровне. А для 3-го и последующих - так не пойдет...3. Также не будет работать, если когда текущая категория (без подкатегорий) находится на самом верхнем уровне (parent_id=0). А какое решение предлагает? Quote Link to post Share on other sites
Kors Posted June 24, 2015 Report Share Posted June 24, 2015 {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} {$c->name|escape} {/foreach} Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.