@T_verdisla_V
Начинающий

Как добавить class = «active» к активному элементу меню?

Здравствуйте. В шаблоне есть код для меню, которое берется из БД.
<div class="container-fluid p-0">
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top">
        <a href="/" class="navbar-brand">
            <img src="/images/Brand.png"  height="50" alt="logo">
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav  align-content-between w-100">
                {foreach $menu as $item}
                    {if ($item->isActive)}
                        <li class="nav-item m-auto active">
                            <a href="{$item->url}{$item->id}/" class="nav-link">{$item->label}</a>
                        </li>
                    {/if}
                {/foreach}
            </ul>
        </div>
    </nav>
</div>

Как сделать так что бы к тегу добавлялся class = "active" если пользователь находится на данной странице?
{if ($item->isActive)} это проверка, выводить этот пункт меню или нет.
Если понадобится код с контроллера
function indexAction($smarty){
    $menu = getItemsMenu();
    $partners = getItemsPartners();

    $smarty->assign('menu', $menu);
    $smarty->assign('partners', $partners);
    $smarty->assign('pageTitle', 'ТМТ Энерго');

    loadTemplate($smarty, 'mainHeader');
    loadTemplate($smarty, 'index');
    loadTemplate($smarty, 'footer');
}

Используется шаблонизатор смарти, можно показать как это сделать в phtml и php, дальше сам разберусь.
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
<li class="nav-item m-auto{if $item->isActive} active{/if}">
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы