Блог

Многоуровневое меню настраиваемое

Многоуровневое меню настраиваемое

Smarty решение многоуровнего меню магазина Shop-Script. Позволяет персонально настраивать вид группы подкатегорий через доп. параметры. Меню оптимизированно и имеет только один запрос к базе данных. 

{* ------------------------------------------
Инструкция к меню
Значение доп. параметра topmenu
Устанавливаются для категорий 3-го уровня
- topmenu=0 - подменю и меню не отображается, тоже самое если не указывать доп. параметр
- topmenu=1 - отображает меню без подменю
- topmenu=2 - отображает меню с 2 подменю
- topmenu=3 - отображает меню с 3 подменю
- topmenu=4 - отображает меню с 4 подменю
- topmenu=5 - отображает меню с 5 подменю и тд
------------------------------------------- *}

{function menu level=0 depth=0}
    {$col_show = ifset($cat.params.topmenu, 0)}
    <a href="{$cat.url}" title="{$cat.name}">
        {if $level == 0}
            {$cat.name|replace:" ":" "}
        {else}
            {$cat.name}
        {/if}
    </a>
    {if ifset($cat.childs) && $depth >= $level && (ifset($col_show) > 1 || $level != 2)}
        {$col = 0}
        <ul>
        {foreach $cat.childs as $child}
            {$col = $col + 1}
            {$child_show = ifset($child.params.topmenu, 0)}
            {if ($level != 1 || $child_show != 0) && ((ifset($col_show) >= $col) || $level!=2)}
                <li>
                    {menu cat=$child level=$level+1 depth=$depth}
                </li>
            {/if}
        {/foreach}
        </ul>
    {/if}
{/function}

<!-- Top Menu Block -->
<div id="topmenu_bl">
    {$category = $wa->shop->categories(0, null, true, true)}
    <ul class="topmenu">
    {foreach $category as $cat name=foo}
        {if $smarty.foreach.foo.iteration <= 3}
            <li>
                {menu cat=$cat depth=2}
            </li>
        {/if}
    {/foreach}
    </ul>
</div>

{if $height = $theme_settings.topmenu_max_height}
<style>
@media only screen and (min-width: 1010px) {
    ul.topmenu > li > ul { max-height: {$height}px; }
}
</style>
{/if}
Теги: smartyМеню
Просмотры: 69