🧱 Суть
В 1С-Битрикс каждая страница сайта обычно состоит из трёх частей:
- header – шапка сайта;
- контент страницы;
- footer – подвал сайта.
Такой подход позволяет хранить общие элементы в одном месте и использовать их на всех страницах.
Типичная структура страницы:
header.php
│
▼
Контент страницы
│
▼
footer.php📦 Проблема
Если не использовать общий шаблон, придётся дублировать на каждой странице:
- HTML-разметку;
<head>;- меню;
- шапку;
- подвал;
- подключение CSS и JavaScript.
При изменении дизайна придётся редактировать десятки файлов.
✅ Решение
Использовать шаблон сайта.
Общие элементы размещаются в:
header.phpfooter.php
А каждая страница содержит только собственный контент.
💻 Код
Подключение шаблона
Практически каждая страница выглядит одинаково:
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Новости");
?>
<h1>Новости</h1>
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>Здесь:
- подключается шапка сайта;
- выводится содержимое страницы;
- подключается подвал.
Что делает header.php
Во время подключения:
- запускается ядро Битрикса;
- формируется начало HTML-документа;
- выводится
<head>; - подключаются CSS и JavaScript;
- отображается шапка сайта;
- выводится меню и другие общие элементы.
Упрощённая схема:
header.php
├── <!DOCTYPE html>
├── <html>
├── <head>
├── CSS
├── JS
├── <body>
├── Header
└── МенюЧто делает footer.php
После вывода контента подключается:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");Он обычно содержит:
- подвал сайта;
- подключение оставшихся скриптов;
- закрывающие HTML-теги.
Например:
Footer
<script>
</body>
</html>Где находятся шаблоны
Современные проекты обычно используют каталог:
/local/templates/Например:
/local/templates/main/Типичная структура:
/local/templates/main/
├── header.php
├── footer.php
├── styles.css
├── template_styles.css
├── description.php
├── components/
└── assets/Выбор шаблона
В одном проекте может существовать несколько шаблонов.
Например:
main
landing
admin
mobileКакой шаблон использовать, определяется в настройках сайта.
Заголовок страницы
Для установки заголовка используется объект $APPLICATION:
$APPLICATION->SetTitle("Каталог");Позже значение будет выведено в <title> внутри шаблона.
Получить текущий заголовок можно так:
$APPLICATION->ShowTitle();Подключение стилей и скриптов
Современный способ подключения ресурсов:
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addCss(
SITE_TEMPLATE_PATH . "/css/style.css"
);
Asset::getInstance()->addJs(
SITE_TEMPLATE_PATH . "/js/app.js"
);Битрикс самостоятельно добавит их в <head> или перед закрывающим тегом </body>.
Константа SITE_TEMPLATE_PATH
Для обращения к файлам шаблона используется:
SITE_TEMPLATE_PATHНапример:
<img src="<?= SITE_TEMPLATE_PATH ?>/images/logo.svg" alt="Logo">Это позволяет не указывать полный путь вручную.
Подключение компонентов
Чаще всего компоненты размещаются между header.php и footer.php:
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[]
);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>Компонент сформирует содержимое страницы, а шаблон обеспечит единое оформление.
Частые ошибки
Не подключать header.php
Без него:
- не инициализируется ядро;
- недоступен объект
$APPLICATION; - не подключаются стили и скрипты.
Не подключать footer.php
В результате:
- страница может завершиться некорректно;
- не подключатся некоторые JavaScript-файлы;
- HTML останется незакрытым.
Дублировать общую разметку
Не стоит копировать:
<head>;- меню;
- шапку;
- подвал
в каждую страницу.
Лучше разместить их в шаблоне сайта.
Жёстко прописывать пути
Плохо:
<img src="/local/templates/main/images/logo.svg">Лучше:
<img src="<?= SITE_TEMPLATE_PATH ?>/images/logo.svg">Подключать CSS и JS обычными тегами
Для ресурсов шаблона предпочтительнее использовать Asset, чтобы Битрикс мог управлять их подключением.
🎯 Вывод
- Все страницы Битрикса строятся на основе шаблона сайта
header.phpподключает ядро, шапку, стили и JavaScriptfooter.phpзавершает формирование страницы- Шаблоны обычно располагаются в
/local/templates - Общие элементы следует хранить в шаблоне, а не дублировать на каждой странице
- Для подключения ресурсов рекомендуется использовать класс
Asset
🔗 Связано
- Битрикс. Архитектура 1С-Битрикс и структура проекта
- Битрикс. Жизненный цикл страницы Bitrix
- Битрикс. Структура папок Bitrix
- Битрикс. Компоненты и IncludeComponent
- Битрикс. Шаблоны компонентов
- Битрикс. Управление ресурсами (CSS и JS)
- Битрикс. Кеширование
- PHP. Подключение файлов (include, require, autoload)