Sign in to follow this  
support

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

Recommended Posts

support

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

 

В Админке - Оформление - Микро-шаблоны правьте шаблон 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}
Edited by VaM

Share this post


Link to post
Share on other sites
support

Вот ещё одно решение от пользователя 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}
 

Share this post


Link to post
Share on other sites
Adilan

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this