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

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

Облазил много тем но ничего не подходит для меня.

есть категория, подкатегория и подподкатегория. Так вот, подскажите как вывести подподкатегории независимыми. То есть нажимаем на категории выводит список подподкатегорий, нажимаем на подкатегорию выводит подподкатегорий нажимаем на подподкатегории и тоже выводит подподкатегорий.

Спасибо.

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

Вам нужно вывести список подкатегорий на странице категории, или просто категории 3-го уровня в каталоге? Или же на каждый уровень категорий свой выпадающий список подкатегорий? Лучше будет если какой-то пример покажите.
 
Если подкатегории на странице категории то так:
 

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

 

Изменено пользователем STM
Ссылка на сообщение
Поделиться на другие сайты

 

Вам нужно вывести список подкатегорий на странице категории, или просто категории 3-го уровня в каталоге? Или же на каждый уровень категорий свой выпадающий список подкатегорий? Лучше будет если какой-то пример покажите.

 

Если подкатегории на странице категории то так:

 

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

просто категории 3-го уровня в каталоге

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

просто категории 3-го уровня в каталоге

 

Можно так:

{if $categories}			
<ul>
   {foreach $categories as $c}
   {if $c->visible}
   <li>
      <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a>
      {if $c->subcategories}
      <ul>
         {foreach $c->subcategories as $cat}
         {if $cat->visible}
         <li>
            <a {if $category->id == $cat->id}class="selected"{/if} href="catalog/{$cat->url}" data-category="{$cat->id}">{$cat->name}</a>						
            {if $cat->subcategories}
            <ul>
               {foreach $cat->subcategories as $cat3}
               {if $cat3->visible}
	       <li>
		<a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a>
               </li>
               {/if}
               {/foreach}						
            </ul>
            {/if}
         </li>
         {/if}
       {/foreach}						
      </ul>
      {/if}
   </li>
   {/if}
   {/foreach}
</ul>
{/if} 
Изменено пользователем STM
Ссылка на сообщение
Поделиться на другие сайты

Если отдельно вывести 3-й уровень самый простой способ наверное так: 

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

Или что-то вроде этого:

 

{function name=categories_tree}
   {if $categories && $level == $c_level}
      <ul>
         {foreach $categories as $c}
            {if $c->visible}
            <li>
               <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
               {categories_tree categories=$c->subcategories level=$level+1}
            </li>
            {/if}
         {/foreach}
      </ul>
   {else}
      {foreach $categories as $c}
         {if $c->visible}
            {categories_tree categories=$c->subcategories level=$level+1}
         {/if}
      {/foreach}
   {/if}
{/function}
{categories_tree categories=$categories level=1 c_level=3}	

c_level=3 нужный уровень

Изменено пользователем STM
Ссылка на сообщение
Поделиться на другие сайты

Данный способ не подходит так как 3 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводит

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

 

Данный способ не подходит так как 3 уровень показывает только когда мы во втором уровне а когда мы в категории то не выводит

Можете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать.

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

Можете показать что Вы пытаетесь сделать? То я что-то совсем перестал Вас понимать.

https://www.silverskazka.ru

Вывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.

Делаю сюда http://finanse.horror-quest.com.ua

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

https://www.silverskazka.ru

Вывод категорий на странице товаров как тут. Только у меня верху должны выводится категории 3 уровня.

Делаю сюда http://finanse.horror-quest.com.ua

Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней. Изменено пользователем STM
Ссылка на сообщение
Поделиться на другие сайты

 

Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней.

Мне нужно чтоб в любой из категорий выводился только 3 уровень.

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

Если отдельно вывести 3-й уровень самый простой способ наверное так: 

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

Или что-то вроде этого:

 

{function name=categories_tree}
   {if $categories && $level == $c_level}
      <ul>
         {foreach $categories as $c}
            {if $c->visible}
            <li>
               <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
               {categories_tree categories=$c->subcategories level=$level+1}
            </li>
            {/if}
         {/foreach}
      </ul>
   {else}
      {foreach $categories as $c}
         {if $c->visible}
            {categories_tree categories=$c->subcategories level=$level+1}
         {/if}
      {/foreach}
   {/if}
{/function}
{categories_tree categories=$categories level=1 c_level=3}	

c_level=3 нужный уровень

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

спасибо. То что надо вот только всегда выводятся категории 3 уровня только первой категории. тоесть если листаю между главными категориями то все равно выводятся подкатегории первой в списке категории

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

Если правильно понял вам нужно 3-х уровненвое меню взять http://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html и сделать вывод по принципу что я выше поедлагал для 3-х уровней.

подскажите как выводить подкатегории 3 уровня выбранной категории. 

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

по этому коду. Спасибо

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

подскажите как выводить подкатегории 3 уровня выбранной категории. 

{foreach $categories as $c}
        {foreach $c->subcategories as $cat}
               {foreach $cat->subcategories as $cat3}
	             <a {if $category->id == $cat3->id}class="selected"{/if} href="catalog/{$cat3->url}" data-category="{$cat3->id}">{$cat3->name}</a>
               {/foreach}						
	{/foreach}						
{/foreach}
по этому коду. Спасибо

 

 

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

Можете подсказать, как правильно сделать?

Как вариант пройтись рекурсивно по дереву категорий, и при условии что у нас в пути содержится не более 3-х категорий вывести категорию третьего уровня.

Код примерно такой:

{function name=flex}
{foreach $categories as $c}
{if $c->path|count == 3}
<b>{$c->name}</b>
{/if}
{flex categories=$c->subcategories}
{/foreach}
{/function}

 

В нужном месте выводим результат выполнения функции вот так:

{flex categories = $categories}

Конечно не лучшее решение, но вполне рабочее.

Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты

Как вариант пройтись рекурсивно по дереву категорий, и при условии что у нас в пути содержится не более 3-х категорий вывести категорию третьего уровня.

Код примерно такой:

{function name=flex}
{foreach $categories as $c}
{if $c->path|count == 3}
<b>{$c->name}</b>
{/if}
{flex categories=$c->subcategories}
{/foreach}
{/function}

 

В нужном месте выводим результат выполнения функции вот так:

{flex categories = $categories}

Конечно не лучшее решение, но вполне рабочее.

Почему то выводит категории 3 уровня всех категорий. А нужно чтоб был 3 уровень активной категории 1 уровня. Можете помочь?

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

Почему то выводит категории 3 уровня всех категорий. А нужно чтоб был 3 уровень активной категории 1 уровня. Можете помочь?

Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visible
Ссылка на сообщение
Поделиться на другие сайты

Ну добавьте условие на уровень $c->level == 1 + in_array($category->id, $c->childs) + $c->visible

Спасибо огромное

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

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

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

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

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

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

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

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

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

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