Сущность шаблона в bitrix представляет из себя именнованую папку в разделе /local/templates/
- файл header.php
- файл footer.php
Все что между ними — контентная часть, подставляемая в страницах.
Шаблоны лежат по адресу /local/templates/ИмяШаблона
.
По сути Шаблон страницы — это layout который задается на странице.
Страница
Сущность страницы
Каждая страница, это папка в корне сайта (может быть вложенная), содержащая в себе index.php файл.
Типовое Содержимое index.php файла
<?php
$APPLICATION->IncludeComponent(
"ПространствоИмен:ИмяКомпонента",
"ШаблонКомпонента",
[
// Параметры
]
);?>
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
Компонентов вызываемых между header.php & footer.php может быть несколько.
Например вам нужно создать страницу «Каталог» по роуту /catalog/.
Вы создаете папку /catalog в корне сайта, и добавляете туда index.php
Принято, что в страницах может быть только компоненты и статичный контент (p, заголовки h2+, img, hr, table не размеченные классами)
Обернуть компонент каким то div с классом — является ошибкой.
Почему:
При попытке редактирования страницы через CMS контент менеджер может сломать верстку в визуальном редакторе, если она будет содержать какие то классы.
Как назначить шаблон на страницу
Переходим в админке на страницу списка сайтов и выбираем ваш сайт(s1).
Внизу вы увидите блок условий назначения шаблонов страницам. Условия вы можете сортировать тем самым выставляя приоритеты. «Без условия» — шаблон по умолчанию применится для всех страниц.
Декомпозиция шаблонов
Вполне допустимо что на проекте всего один шаблон, т.к. header.php & footer.php обычно едины для всего проекта.
Однако бывает необходимость все таки нескольких шаблонов, к примеру на одних страницах есть sidebar, на других его нет. Чаще всего так бывает с главной страницей + внутренние страницы. Соответственно у вас получится 2 шаблона: main & vn.
Также всегда будет присутствовать шаблон по умолчанию = .default. В него складываются шаблоны компонентов. Его редко используют как реальный шаблон подключаемый к страницам. Можно воспринимать его как родитель, от которого мы наследуем другие шаблоны.
Чтобы избежать дублирования кода между main & vn шаблнонами, мы выносим все общие блоки в чанки. Термин мы взяли из modx, он весьма подходит. Чанки — это просто куски верстки общие между шаблонами. Складываются они в корне .default адресу /include
Чанк подключается стандартной командой подключения файла в php
include $_SERVER["DOCUMENT_ROOT"] . '/local/templates/.default/include/head.inc.php';
Пример использования чанка. В данном примере мы вынесли общую часть head в отдельный чанк, и добавили пару файлов которые относятся только к текущему шаблону.
<head>
<?php // общие теги
include $_SERVER["DOCUMENT_ROOT"] . '/local/templates/.default/include/head.inc.php';
Asset::getInstance()->addJs(STATIC_FOLDER . "node_modules/jquery-scrollify/jquery.scrollify.js");
Asset::getInstance()->addJs(STATIC_FOLDER . "build/js/main.js");
?>
</head>