Как работает menu.tpl, или небольшая проблема

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

mr.glonin
mr.glonin

Сообщение #1 mr.glonin » 22.12.2019, 19:43

Добрый вечер форумчане.

Долгое время любительски привязываю шаблоны к системе.
И возникла проблема как быть с разными class в параметрах li у каждого меню.

К примеру в шапке меню использует свой ul class и свой li class, в редких случаях a class
в футоре уже иначе идет, и menu.tpl позволяет везёт выводить только одно оформление.

Можно как то это решить, к примеру если я вызываю {$menu_footer} то через if выводить для него только свой class ul,li
Что то вроде {if $menu_footer}class=" footer"{/if} только для {$menu_footer}
Или возможно выводить вообще другой код для {$menu_footer}

synsmaster
synsmaster
Репутация: 5
Сообщения: 6
Зарегистрирован: 23.12.2019
С нами: 4 года 3 месяца

Сообщение #2 synsmaster » 23.12.2019, 09:20

Вы можете в menu.tpl вывести свою структуру, делая проверку на ID меню, который задается в админке.
Например для {$menu_footer} :

Код: Выделить всё

{if $menu_items}
    {if $menu->group_id == "footer"} // footer - это id указанный для меню футер

        Ваш код для меню футера ....................

    {else}

        {function name=menu_items_tree}
        {if $menu_items}
        <ul class="fn_menu_list menu_group__list menu_group__list--{$level} menu_group--{$menu->group_id}">
            {foreach $menu_items as $item}
            {if $item->visible == 1}
            <li class="menu_group__item menu_group__item--{$level} {if $item->submenus && $item->count_children_visible>0}menu_eventer{/if}">
                <a class="menu_group__link" {if $item->url} href="{if preg_match('~^https?://~', {$item->url})}{$item->url}{else}{url_generator route='page' url=$item->url}{/if}"{/if} {if !$item->submenus && $item->is_target_blank}target="_blank"{/if}>
                    <span>{$item->name|escape}</span>
                </a>
                {menu_items_tree menu_items=$item->submenus level=$level + 1}
            </li>
            {/if}
            {/foreach}
        </ul>
        {/if}
        {/function}
        {menu_items_tree menu_items=$menu_items level=1}
    {/if}
{/if}

akvk
akvk
Репутация: 0
Сообщения: 5
Зарегистрирован: 15.09.2016
С нами: 7 лет 6 месяцев

Сообщение #3 akvk » 29.07.2020, 17:40

Добрый вечер! Подскажите пожалуйста, каким условием вывести class"activ" для li? Нужно сделать ссылку активной при нахождение на этой странице.

Александр116
Александр116

Сообщение #4 Александр116 » 17.09.2020, 10:56

У меню разные id чем у страницы, того как костыль сравнивать url страницы и url пункта меню
{if $page->url == $item->url} main-menu__item--active{/if}


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 24 гостя