Jump to content

Подкатегории на странице products.tpl


Recommended Posts

Вывожу под категории так

{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} 
Link to post
Share on other sites

 

{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}
Link to post
Share on other sites

вы хотите если у категории нет подкатегорий, выводить все категории что находяться на уровне с этой категорией?

Имеется в виду если он в подктегории (в которой уже нет дочерних категорий) то все равно вверху вывести эти подкатегории.

Пример как я понял:

Первая категория

- подкатегория

- подкатегория 2

- подкатегория 3

Так вот если посетитель находиться скажем в категории 2 то вверху вывести блоки\ссылки на "категория", "категория 2" и "категория 3".
Link to post
Share on other sites
{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 by mishanya
Link to post
Share on other sites

Слишком примитивно.

 

1. Гоняется цикл ради одного элемента - очень нерационально.

2. Так работает только в том случае, когда текущая категория (без подкатегорий) находится на  втором уровне. А для 3-го и последующих - так не пойдет...

3. Также не будет работать, если  когда текущая категория (без подкатегорий) находится на самом верхнем уровне (parent_id=0).

Link to post
Share on other sites

Имеется в виду если он в подктегории (в которой уже нет дочерних категорий) то все равно вверху вывести эти подкатегории.

Пример как я понял:Так вот если посетитель находиться скажем в категории 2 то вверху вывести блоки\ссылки на "категория", "категория 2" и "категория 3".

Верное :) я запутался с этими под категориями :)

Link to post
Share on other sites

 

{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}

так?

Ага заработало, спасибо )

Link to post
Share on other sites

Слишком примитивно.

 

1. Гоняется цикл ради одного элемента - очень нерационально.

2. Так работает только в том случае, когда текущая категория (без подкатегорий) находится на  втором уровне. А для 3-го и последующих - так не пойдет...

3. Также не будет работать, если  когда текущая категория (без подкатегорий) находится на самом верхнем уровне (parent_id=0).

 

А какое решение предлагает?

Link to post
Share on other sites

{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}
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...