Авторизация  
VaM

Как в боксе Разделы выводить не только категории первого уровня, но и подкатегории?

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

VaM

Можно так сделать.

 

В Админке - Оформление - Микро-шаблоны правьте шаблон categories-box и меняйте шаблон бокса Разделы:

{if $content_list}
<section class="widget inner categories-widget">
<h3 class="widget-title">{lang}Categories{/lang}</h3>
<ul class="icons clearfix">
{foreach from=$content_list item=node}
<li{if $node.alias == $content_alias} class="active"{/if}><a href="{$node.url}">{$node.name}</a></li>
{/foreach}
</ul>
</section>
{/if}

на:

{if $content_list}
<section class="widget inner categories-widget">
<h3 class="widget-title">{lang}Categories{/lang}</h3>
<ul class="icons clearfix">
{foreach from=$content_list item=node}
<li{if $node.alias == $content_alias} class="active"{/if}><a href="{$node.url}">{$node.name}</a>
{content_listing template='links' parent={$node.id} type='category' limit='100'}
</li>
{/foreach}
</ul>
</section>
{/if}
Изменено пользователем VaM

Поделиться сообщением


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

Вот ещё одно решение от пользователя Adilan - 

 

От jstree меню в итоге отказался, сделал по своему, работает быстрей и правильней (для меня):
 
- при нажатии на пункт меню, выбранное меню открывается, все остальные закрываются;
 
- если в категории первого уровня есть товары (без вложенных меню), товары выводятся в меню;
 
- при выборе товара, или меню, выбранный товар или пункт меню подсвечиваются (настройки css).
 
Вот решение:
 
В основном шаблоне вызываем свой шаблон меню:
         <ul class="my-right-mnu">
             {content_listing template="my-links-category" parent="0" type="category"}
         </ul>
 
 
Текст микрошаблона my-links-category:
{foreach from=$content_list item=node}
<li{if $node.alias == $content_alias} class="active"{/if}><a href="{$node.url}">{$node.name}</a>
  {if ($node.alias==$content_alias)}<ul class="podmnu">
    {content_listing template='my-subcat-mnu-list0' parent={$node.id} type='category' limit='100'}
    {content_listing template="my-mnu-product-listing0" parent={$content_id} page={$page} type="product,downloadable" current_order={$current_order}}
  </ul>{/if}
  {if ($node.alias!=$content_alias)}<ul class="podmnu">
    {content_listing template='my-subcat-mnu-list' parent={$node.id} type='category' limit='100'}
    {if $parent_id == $node.id}{content_listing template="my-mnu-product-listing" parent={$parent_id} page={$page} type="product,downloadable" current_order={$current_order}}{/if}
  </ul>{/if}
</li>
{/foreach}
 
 
Текст микрошаблона my-subcat-mnu-list0
{foreach from=$content_list item=node}
<li class="no-active"><a href="{$node.url}">{$node.name}</a></li>
{/foreach}
 
 
Текст микрошаблона my-subcat-mnu-list
{foreach from=$content_list item=node}
{if $node.alias == $content_alias}{$fl = true}{/if}
{if $node.id == $parent_id}{$fl1 = true}{/if}
{/foreach}
{foreach from=$content_list item=node}
{if $node.alias == $content_alias}<li class="active"><a href="{$node.url}">{$node.name}</a></li>{else}
{if $fl or $fl1}<li {if $node.id == $parent_id}class="active"{/if}><a href="{$node.url}">{$node.name}</a></li>{/if}
{/if}
{/foreach}
 
 
Текст микрошаблона my-mnu-product-listing0
{if $content_list}
 
<!-- start: products listing -->
  <ul class="thumbnails">
    {foreach from=$content_list item=node}
    <li class="no-active"><a href="{$node.url}">{$node.name}</a></li>
    {/foreach}
  </ul>
<!-- end: products listing -->
  
{*else}
{lang}No Items Found{/lang*}
{/if}
 
 
Текст микрошаблона my-mnu-product-listing
{if $content_list}  
<!-- start: products listing -->
  <ul class="thumbnails">
    {foreach from=$content_list item=node}
    <li {if $node.alias == $content_alias}class="active"{/if}><a href="{$node.url}">{$node.name}</a></li>
    {/foreach}
  </ul>
<!-- end: products listing -->
{*else}
{lang}No Items Found{/lang*}
{/if}
 

Поделиться сообщением


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

При многоуровневом меню получается много обращений к базе при формировании меню. Вот пример:

Раздел 1
- Подраздел 1
- Подраздел 2
Раздел 2
- Подраздел 1
- Подраздел 2
- - ПодПодраздел 1
- - ПодПодраздел 2
Раздел 3
- Подраздел 1
- Подраздел 2
 
В данном случае у нас получаются следующие обращения к базе для вывода меню. 
1-е обращение - формируем уровень Раздел
2-е обращение - формируем уровень Подраздел Раздела 1
3-е обращение - формируем уровень Подраздел Раздела 2
4-е обращение - формируем уровень ПодПодраздел Подраздела Раздела 2
и т.д.
 
А как можно за одно обращение вытянуть все разеделы в массив и уже с ними работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM
В 14.10.2018 в 21:49, Adilan сказал:

При многоуровневом меню получается много обращений к базе при формировании меню. Вот пример:

Раздел 1
- Подраздел 1
- Подраздел 2
Раздел 2
- Подраздел 1
- Подраздел 2
- - ПодПодраздел 1
- - ПодПодраздел 2
Раздел 3
- Подраздел 1
- Подраздел 2
 
В данном случае у нас получаются следующие обращения к базе для вывода меню. 
1-е обращение - формируем уровень Раздел
2-е обращение - формируем уровень Подраздел Раздела 1
3-е обращение - формируем уровень Подраздел Раздела 2
4-е обращение - формируем уровень ПодПодраздел Подраздела Раздела 2
и т.д.
 
А как можно за одно обращение вытянуть все разеделы в массив и уже с ними работать?

Есть два встроенных меню, попробуйте их.

Метки:

{category_box_jstree}

и

{category_box}

Там вроде бы всё за раз вытаскивается.

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация