Настройка отдельных шаблонов для разных сайтов 1С-Битрикс
В мультисайтовой конфигурации Битрикс несколько сайтов живут в одной установке — общая база, общий каталог, но разный внешний вид. Задача — дать каждому сайту свой шаблон, не дублируя общую логику.
Структура шаблонов в мультисайте
Битрикс хранит шаблоны в /bitrix/templates/ (системные) и /local/templates/ (пользовательские). Для каждого сайта в административной панели задаётся шаблон по умолчанию: Настройки → Сайты → Список сайтов → {Сайт} → Шаблон сайта.
Рекомендуемая структура при нескольких сайтах:
/local/templates/
base/ # Общий базовый шаблон (layout, хедер, футер)
site_retail/ # Шаблон розничного сайта
site_wholesale/ # Шаблон оптового сайта
site_mobile/ # Мобильная версия (если не адаптив)
Наследование шаблонов. Битрикс не поддерживает наследование шаблонов нативно, но его имитируют через символьные ссылки или include:
// /local/templates/site_retail/header.php
// Подключаем общий хедер и переопределяем только нужное
define('TEMPLATE_BASE_PATH', $_SERVER['DOCUMENT_ROOT'] . '/local/templates/base/');
include TEMPLATE_BASE_PATH . 'header.php';
Привязка компонентов к шаблону
Для каждого компонента можно задать разный шаблон в разных сайтах. Шаблоны компонентов ищутся в порядке:
-
/local/templates/{site_template}/components/{namespace}/{component}/{template}/ -
/local/components/{namespace}/{component}/templates/{template}/ -
/bitrix/templates/{site_template}/components/... -
/bitrix/components/{namespace}/{component}/templates/{template}/
Это значит: чтобы у розничного сайта была своя карточка товара, достаточно создать /local/templates/site_retail/components/bitrix/catalog.element/.default/template.php.
Практические нюансы
CSS и JS ресурсы. Каждый шаблон имеет свой style.css и script.js в корне. Битрикс автоматически подключает их. Для сборки через Vite или Webpack задают publicPath под каждый шаблон.
Проверка текущего сайта в коде:
// Получить ID текущего сайта
$siteId = \Bitrix\Main\Context::getCurrent()->getSite(); // 's1', 's2', etc.
// В компонентах и шаблонах — глобальная константа
define('SITE_ID', $siteId);
// Условный рендеринг в шаблоне
if (SITE_ID === 's2') {
// Логика для оптового сайта
}
Языковые файлы. Шаблон-специфичные переводы хранятся в /local/templates/{template}/lang/{lang}/. Битрикс подгружает их автоматически при использовании GetMessage().
Сроки
| Конфигурация | Срок |
|---|---|
| Настройка 2 шаблонов (базовая структура) | 1–2 дня |
| Перенос существующего дизайна в структуру мультисайта | 2–4 дня |
| Разработка шаблонов с нуля для 2–3 сайтов | 5–10 дней |







