Назначаем разделу активный класс в catalog.section.list

Время чтения: 2 минуты
0 779

Иногда в Битрикс необходимо вывести меню через компонент catalog.section.list, а текущий раздел, где находится пользователь - выделить.

Так как назначить активный раздел? Смотрим ниже на цикл вывода разделов:


<?foreach ($arResult['SECTIONS'] as &$arSection):
    //проверяем на активность
    $cur_page = $APPLICATION->GetCurPage(false);
    $is_active = ($arSection['SECTION_PAGE_URL'] == $cur_page || strpos($cur_page,$arSection['SECTION_PAGE_URL'])!==false)?" active":"";
?>
    <a class="block-section-item<?if($is_active):?> active<?endif;?>" href="<?=$arSection['SECTION_PAGE_URL']?>">
        <?=$arSection['NAME'];?>
    </a>
<?endforeach;?>

Что делает метод $APPLICATION->GetCurPage(false)?

Из документации Битрикс: Возвращает путь к текущей странице относительно корня. А указанный в нем параметр false - удаляет из возвращаемого url страницы index.php (вернется подстрока от 0-й позиции до первого встретившегося "/index.php")

В переменной $is_active сравним SECTION_PAGE_URL - ссылку категории, с текущей ссылкой адресной строки ИЛИ найдем вхождение ссылки категории спомощью strpos().

Далее $is_active вернет нам true или false, исходя из условия поставим ссылке актвный класс - active.

« Все статьи

Комментарии 0 комментариев
Только авторизованные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Что еще посмотреть?