Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Если папка то применяем, проверка текущего раздела или подраздела

Просмотров: 39806
Иногда требуется применить особый стиль к определённой директории сайта или управлять выводом элементов на странице в зависимости от текущего URL. Для этого в 1С-Битрикс можно использовать встроенные методы, такие как CMain::GetCurPage или CSite::InDir. Эти методы помогают определять текущий путь или каталог, а затем использовать его для динамического изменения верстки или стилей. Рассмотрим несколько примеров.

Метод CMain::GetCurPage

Метод CMain::GetCurPage возвращает путь к текущей странице без параметров. Это полезно, когда нужно применить стили или выполнить определённый код на конкретной странице.

Пример: Предположим, задача — применить класс для элемента

  • в разделе /company/. Если пользователь находится в директории /company/, элементу будет присвоен класс company, на всех остальных страницах будет применяться класс nocompany.

    
    <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;?>

    Использование методов для определения текущего раздела и условий помогает сделать сайт более динамичным и удобным в управлении. Но важно помнить, что чрезмерное использование таких условий может привести к усложнению кода. В идеале, для более сложных случаев стоит использовать инструменты управления структурой сайта через административную панель Битрикс или отдельные шаблоны для разделов.

  • Услуги

    Стоимость разработки на 1С-Битрикс

    Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

    Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.

    Включено в стоимость разработки

    В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

    • Лицензия и модули

      Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

    • Скорость и SEO

      Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

    Блог-note

    Заметки по 1С-Битрикс