Шаблон сайта в Битрикс: структура и файлы
Шаблон сайта в 1С-Битрикс — это папка с набором файлов, которая определяет внешний вид всех страниц. Сайт может иметь несколько шаблонов и переключаться между ними по условиям: один для основных страниц, другой для лендинга, третий для личного кабинета.
Разберём, из каких файлов состоит шаблон, за что отвечает каждый, где шаблон должен лежать и как он создаётся и назначается в админке.
Где лежат шаблоны
Битрикс ищет шаблоны в двух местах, и порядок здесь важен:
| Путь | Назначение |
|---|---|
/local/templates/ |
Ваши шаблоны. Приоритетное расположение, не затирается обновлениями |
/bitrix/templates/ |
Шаблоны из поставки и решений Маркетплейса |
Если шаблон с одинаковым именем есть в обоих местах, используется тот, что в
/local/. Это удобно: можно скопировать шаблон решения к себе и править,
не трогая оригинал.
Складывать свой шаблон в /bitrix/templates/ нельзя — при обновлении ядра
папка перезаписывается вместе со всеми правками.
Состав шаблона
Полная структура выглядит так:
/local/templates/main/
header.php <- верх страницы
footer.php <- низ страницы
template_styles.css <- стили, подключаются автоматически
script.js <- скрипт, подключается автоматически
.description.php <- название шаблона для админки
.parameters.php <- настраиваемые параметры шаблона
/images/ <- служебные изображения шаблона
/components/ <- кастомизированные шаблоны компонентов
/page_templates/ <- заготовки новых страниц
/include/ <- включаемые области
Обязательных файлов всего два: header.php и footer.php. Остальные добавляются по мере необходимости.
header.php и footer.php
Основа шаблона. Первый содержит всё, что идёт до контента страницы, второй — всё после. Разбор их сборки из готовой вёрстки — в статье Натяжка вёрстки на Битрикс.
template_styles.css и script.js
Два файла с особым статусом: подключаются автоматически, прописывать их не нужно. Битрикс сам добавит их в страницу и включит в объединение файлов, если оно настроено.
Практическое следствие: основные стили шаблона логично держать именно в
template_styles.css. Дополнительные файлы подключаются отдельно —
об этом ниже.
.description.php
Отвечает за то, как шаблон называется в списке админки. Без него шаблон будет отображаться как папка с техническим именем:
<?php
$arTemplate = [
'NAME' => 'Основной шаблон сайта',
'DESCRIPTION' => 'Шаблон для всех страниц, кроме личного кабинета',
'SORT' => 1,
];
.parameters.php
Позволяет вынести настройки шаблона в админку: телефон, ссылки на соцсети, режим показа блока.
Значения потом доступны в шаблоне через массив $arTheme или через параметры,
в зависимости от реализации:
<?php
$arTemplateParameters = [
'PHONE' => [
'NAME' => 'Телефон в шапке',
'TYPE' => 'STRING',
'DEFAULT' => '+7 (495) 000-00-00',
],
];
Механика та же, что у параметров компонентов, — она подробно разобрана в статье .parameters.php в Битрикс.
Папка /components/
Сюда копируются шаблоны компонентов, которые вы переделываете под свою вёрстку. Структура повторяет путь компонента:
/local/templates/main/components/bitrix/menu/top/template.php
Читается это так: компонент bitrix:menu, шаблон с именем top.
Файлы в этой папке имеют приоритет над оригинальными шаблонами компонента.
Папка /page_templates/
Заготовки страниц. Когда контент-менеджер создаёт новую страницу в админке, ему предлагается выбрать одну из этих заготовок. Полезно, если у сайта есть типовые макеты: страница с боковой колонкой, страница без неё, посадочная.
Возникли проблемы с 1С-Битрикс? Поможем разобраться.
Исправим ошибки, доработаем функционал, ускорим работу сайта или просто подскажем правильное решение. Оставьте номер телефона — свяжемся с вами в ближайшее время.
Полезные константы
Внутри шаблона доступны константы, которые избавляют от жёстко прописанных путей:
| Константа | Что содержит |
|---|---|
SITE_TEMPLATE_PATH | Путь к папке текущего шаблона |
SITE_ID | Идентификатор текущего сайта |
SITE_DIR | Корневая папка сайта |
LANG_CHARSET | Кодировка сайта |
LANGUAGE_ID | Язык интерфейса |
Использовать SITE_TEMPLATE_PATH вместо относительных путей —
обязательное правило. Иначе ресурсы перестанут находиться на вложенных страницах.
Создание шаблона
Два рабочих способа.
Через файловую систему
Создать папку в /local/templates/, положить туда header.php,
footer.php и .description.php. Шаблон появится в списке
админки автоматически. Этот путь удобнее при разработке: файлы сразу под контролем версий.
Через админку
Раздел Настройки → Настройки продукта → Сайты → Шаблоны сайтов. Здесь шаблон создаётся и редактируется через веб-интерфейс. Подходит для мелких правок, но для полноценной разработки неудобен.
Назначение шаблона сайту
Шаблон привязывается к сайту в разделе Настройки → Настройки продукта → Сайты → выбрать сайт. В блоке «Шаблоны сайта» можно задать несколько шаблонов с условиями применения и порядком сортировки.
Система проверяет условия сверху вниз и применяет первый подошедший шаблон. Шаблон без условия должен стоять последним — иначе он перехватит все страницы, и остальные правила не сработают.
Как настроить отдельный шаблон для конкретного раздела — разберём в отдельном материале.
Порядок подключения файлов страницы
Понимание порядка сборки страницы избавляет от многих непонятных багов:
- Подключается пролог
/bitrix/header.php; - ядро определяет, какой шаблон применить;
- выполняется
header.phpшаблона; - выводится содержимое страницы;
- выполняется
footer.phpшаблона; - отрабатывает эпилог и отложенные функции.
Именно поэтому $APPLICATION->SetTitle() вызывается в теле страницы
после подключения пролога, а не до: на момент выполнения header.php
заголовок уже должен быть известен. Этот механизм называется отложенными функциями —
ShowTitle() выводит не значение, а «заглушку», которая заполняется позже.
Частые ошибки
-
Шаблон лежит в
/bitrix/templates/. Пропадёт при обновлении ядра. -
Нет
.description.php. В админке шаблон называется технической строкой, и через год никто не помнит, какой из них рабочий. - Шаблон без условия стоит первым. Все остальные правила перестают работать.
-
Стили лежат в отдельном файле, а
template_styles.cssпуст. Теряется автоматическое подключение и участие в объединении файлов. -
Шаблоны компонентов правятся прямо в
/bitrix/components/. Правки исчезнут при обновлении. Копируйте в свой шаблон.
Итог
Шаблон сайта — это папка в /local/templates/ с двумя обязательными файлами:
header.php и footer.php. К ним добавляются
template_styles.css и script.js с автоматическим подключением,
.description.php с человеческим названием и папка /components/
для кастомизированных шаблонов компонентов.
Сайту можно назначить несколько шаблонов с условиями применения — при этом шаблон без условия всегда должен стоять последним в списке.