Полезные статьи по разработке сайта на системе управления 1С-Битрикс. Программирование. Верстка.

Активный раздел в компоненте catalog.section.list

  5

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

Для того чтобы выделить активный пункт текущего раздела, необходимо в шаблоне  компонента 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="Link <?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.