Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Здравствуйте
 
У меня есть 7 уровней вложения в меню. Есть задача что бы в каждой категории отображались только подкатегории. С этим хорошо справляется
 

   {foreach $category->subcategories as $c}
      <li>
         <a {if $category->id == $c->id}class="selected"{/if} href="catalog{$c->url}">
            {$c->name}
         </a>
      </li>
   {/foreach}

Но в последней категории в меню тогда пусто. Как можно реализовать решение что бы в последней категории отображались соседние (тот же уровень)?

 

 

 

 

= = = = = = = = = 

 

Увидел решение "Универсальная функция, которая выводит СОСЕДНИЕ категории на ЛЮБОМ уровне вложенности"

 

{* Рекурсивная функция вывода соседних категорий *}
{function name=categories_tree_siblings}
{if $categories}
	{foreach $categories as $c}
		{* Показываем только видимые категории *}
		{if $c->visible}
		{if  $category->parent_id == $c->parent_id}
			<li>
			<a {if $category->id == $c->id}class="selected"{/if} href="catalog{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
			</li>
		{/if}
	    	{if in_array($category->id, $c->children)}
			{categories_tree_siblings categories=$c->subcategories}
		{/if}					
		{/if}
	{/foreach}
{/if}
{/function}
<ul>{categories_tree_siblings categories=$categories}</ul>

Может её как то переделать что бы работала только с последним уровнем?

Изменено пользователем DeveLab
Ссылка на сообщение
Поделиться на другие сайты
{if $category->subcategories}
	{foreach $category->subcategories as $c}
		<li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li>
	{/foreach}
{else}
	{$parent_cat = $category->path[$category->path|count-2]}
	{if $parent_cat->subcategories}
		{foreach $parent_cat->subcategories as $c}
			<li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li>
		{/foreach}
	{/if}
{/if}

 

 

 

 

попробуйте так, действует следующим образом, если у категории есть подкатегории выводить их, если их нет, выводить подкатегории родительской категории.

Ссылка на сообщение
Поделиться на другие сайты

 

{if $category->subcategories}
	{foreach $category->subcategories as $c}
		<li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li>
	{/foreach}
{else}
	{$parent_cat = $category->path[$category->path|count-2]}
	{if $parent_cat->subcategories}
		{foreach $parent_cat->subcategories as $c}
			<li><a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}">{$c->name}</a></li>
		{/foreach}
	{/if}
{/if}

 

 

 

 

попробуйте так, действует следующим образом, если у категории есть подкатегории выводить их, если их нет, выводить подкатегории родительской категории.

 

Невероятно! Большое спасибо! С первого раза 100% попадание :)

Ссылка на сообщение
Поделиться на другие сайты

Работает это лишь в простейших ситуациях.

А вообще при таком способе могут быть сюрпризы - например, когда в категории есть две подкатегории и обе они отключены...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...