Иногда требуется применить особый стиль к определённой директории сайта или управлять выводом элементов на странице в зависимости от текущего URL. Для этого в 1С-Битрикс можно использовать встроенные методы, такие как CMain::GetCurPage или CSite::InDir. Эти методы помогают определять текущий путь или каталог, а затем использовать его для динамического изменения верстки или стилей. Рассмотрим несколько примеров.
Метод CMain::GetCurPage
Метод CMain::GetCurPage возвращает путь к текущей странице без параметров. Это полезно, когда нужно применить стили или выполнить определённый код на конкретной странице.
Пример: Предположим, задача — применить класс для элемента
<li <?if ($APPLICATION->GetCurDir()=='/company/'):?>class="company"<?else:?> class="nocompany"<?endif;?>>
содержимое
</li>
Условие для вложенных директорий
Метод CSite::InDir позволяет применить условие не только для конкретной директории, но и для всех её поддиректорий.
Пример: Если требуется активировать класс для каталога /metalworking/ и всех его подкаталогов:
<li <?if(CSite::InDir('/metalworking/')):?>class="active"<?endif;?> class="noactive">
Пример для исключения aside в определённых разделах
Представим ситуацию, где на сайте несколько разделов имеют одноколоночную верстку, и нужно не выводить боковую колонку aside в этих разделах.
<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
|| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
|| ($APPLICATION->GetCurDir()=='/portfolio/')
|| ($APPLICATION->GetCurDir()=='/forum/')
):?>
Здесь важно не злоупотреблять такими конструкциями, поскольку при большом количестве условий код становится сложным для понимания и поддержки.
В данном примере эффективнее было бы создать и применять параметр разделов из настроек модуля "Управление структурой".
Определение уровня раздела в каталоге
Если нужно применить условие для определённого уровня каталога, можно воспользоваться переменной $arResult["SECTION"]["DEPTH_LEVEL"], которая указывает глубину текущего раздела.
Пример: Для каталога уровней 1 или 2 можно применить следующую конструкцию:
<?if(
($arResult["SECTION"]["DEPTH_LEVEL"]==1) ||
($arResult["SECTION"]["DEPTH_LEVEL"]==2)
):?>
<?endif;?>
Использование методов для определения текущего раздела и условий помогает сделать сайт более динамичным и удобным в управлении. Но важно помнить, что чрезмерное использование таких условий может привести к усложнению кода. В идеале, для более сложных случаев стоит использовать инструменты управления структурой сайта через административную панель Битрикс или отдельные шаблоны для разделов.