Bitrix Help
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Главная » Разработка Битрикс » Вёрстка и шаблоны » Свой шаблон для конкретного раздела сайта в Битрикс

Свой шаблон для конкретного раздела сайта в Битрикс

Обновлено: 2026 • Раздел: Вёрстка и шаблоны • Просмотров: 16
Схема выбора шаблона в Битрикс: условие проверяет раздел и применяет нужный шаблон страницы


Далеко не всегда весь сайт должен выглядеть одинаково. Каталогу нужна боковая колонка с фильтром, посадочной странице — вообще никакой обвязки, личному кабинету — своя шапка, а странице печати — голая вёрстка без меню.

В 1С-Битрикс это решается несколькими шаблонами с условиями применения. Разберём все способы назначить шаблон разделу или странице — от настроек в админке до подмены из кода — и объясним, в каком порядке система их проверяет.

Способ 1. Условие в настройках сайта

Штатный и самый правильный путь. Настраивается в разделе НастройкиНастройки продуктаСайты → выбрать сайт. В блоке «Шаблоны сайта» добавляется строка с тремя полями:

ПолеЧто задаёт
ШаблонКакой шаблон применить
УсловиеPHP-выражение, возвращающее true или false
СортировкаПорядок проверки условий

Примеры рабочих условий:

CSite::InDir('/catalog/')                    // раздел каталога и всё внутри
CSite::InDir('/personal/')                   // личный кабинет
$_REQUEST['print'] == 'Y'                    // версия для печати
$GLOBALS['USER']->IsAuthorized()             // только для авторизованных
CSite::InDir('/landing/promo/index.php')     // одна конкретная страница

Функция CSite::InDir() — основной инструмент здесь. Она проверяет, находится ли текущая страница в указанном разделе, включая вложенные.

Порядок имеет значение

Система проверяет условия по возрастанию сортировки и применяет первый подошедший шаблон. Отсюда два следствия:

Типичная рабочая раскладка:

СортировкаУсловиеШаблон
1$_REQUEST['print'] == 'Y'print
2CSite::InDir('/landing/')landing
3CSite::InDir('/personal/')personal
100пустоmain

Способ 2. Свойство раздела

Шаблон можно задать через свойство раздела, не трогая настройки сайта. В файле .section.php нужного раздела:

<?php
$sSectionName = 'Каталог';
$arDirProperties = [
    'template' => 'catalog',
];

То же самое настраивается через админку: КонтентСтруктура сайта → свойства раздела.

Подход удобен тем, что настройка лежит рядом с самим разделом и переносится вместе с ним. Минус — она разбросана по файловой системе, и через год найти все переопределения сложнее, чем посмотреть один список в настройках сайта.

Помощь по 1С-Битрикс

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

Исправим ошибки, доработаем функционал, ускорим работу сайта или просто подскажем правильное решение. Оставьте номер телефона — свяжемся с вами в ближайшее время.

    Способ 3. Подмена из кода

    Шаблон можно назначить программно — прямо в теле страницы или в обработчике события:

    <?php
    require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');
    
    $APPLICATION->SetTemplate('landing');

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

    Через обработчик события

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

    <?php // /local/php_interface/init.php
    
    AddEventHandler('main', 'OnBeforeProlog', function () {
        global $APPLICATION;
    
        if (isset($_GET['embed']) && $_GET['embed'] === 'Y') {
            $APPLICATION->SetTemplate('embed');
        }
    });

    Механика обработчиков подробно разобрана в статье EventManager в Битрикс.

    Способ 4. Параметр в адресе

    Битрикс поддерживает переключение шаблона через GET-параметр без всяких настроек:

    https://example.ru/catalog/?bitrix_include_areas=N&print=Y

    Такой приём удобен для отладки — быстро посмотреть страницу в другом шаблоне, не меняя настроек. Для постоянной работы не годится.

    Что копировать, а что нет

    Создавая второй шаблон, легко получить два почти одинаковых набора файлов, которые дальше расходятся: правку внесли в один, а во втором забыли.

    Практичный подход — выносить общее:

    Если различия между шаблонами сводятся к паре блоков, второй шаблон часто вообще не нужен: достаточно условия внутри существующего.

    Когда второй шаблон не нужен

    Прежде чем плодить шаблоны, проверьте — может, задача решается проще:

    ЗадачаРешение
    Скрыть боковую колонку на нескольких страницах Условие в шаблоне или свойство страницы
    Другой баннер в разделе Включаемая область в режиме sect
    Другой класс на <body> Проверка CSite::InDir() прямо в шаблоне
    Полностью иная структура страницы Отдельный шаблон
    Своя шапка и подвал у личного кабинета Отдельный шаблон

    Проверка после настройки

    1. Откройте страницу раздела — должен примениться нужный шаблон.
    2. Откройте вложенную страницу этого раздела — шаблон должен сохраниться.
    3. Откройте страницу вне раздела — должен вернуться основной шаблон.
    4. Проверьте главную: частая ошибка — условие перехватывает и её.
    5. Убедитесь, что стили и скрипты подключаются в обоих шаблонах.
    6. Проверьте вывод меню и хлебных крошек в новом шаблоне.

    Частые ошибки

    Итог

    Основной способ назначить свой шаблон разделу — условие в настройках сайта с CSite::InDir(). Ключевое правило: частные условия идут первыми, а шаблон без условия — последним, иначе он перехватит все страницы.

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

    Услуги


    База знаний