Налаштування окремих шаблонів для різних сайтів 1С-Бітрікс
У мультисайтовій конфігурації 1С-Бітрікс кілька сайтів працюють в одній інсталяції — спільна база, спільний каталог, але різний зовнішній вигляд. Завдання — надати кожному сайту власний шаблон без дублювання спільної логіки.
Структура шаблонів у мультисайті
1С-Бітрікс зберігає шаблони в /bitrix/templates/ (системні) та /local/templates/ (користувацькі). Для кожного сайту в адміністративній панелі задається шаблон за замовчуванням: Налаштування → Сайти → Список сайтів → {Сайт} → Шаблон сайту.
Рекомендована структура для кількох сайтів:
/local/templates/
base/ # Спільний базовий шаблон (layout, хедер, футер)
site_retail/ # Шаблон роздрібного сайту
site_wholesale/ # Шаблон оптового сайту
site_mobile/ # Мобільна версія (якщо не адаптивний дизайн)
Успадкування шаблонів. 1С-Бітрікс не підтримує успадкування шаблонів нативно, але його імітують через символічні посилання або 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 у корені — 1С-Бітрікс підключає їх автоматично. При збірці через Vite або Webpack задають publicPath для кожного шаблону окремо.
Перевірка поточного сайту в коді:
// Отримати ID поточного сайту
$siteId = \Bitrix\Main\Context::getCurrent()->getSite(); // 's1', 's2', тощо
// У компонентах і шаблонах — глобальна константа
define('SITE_ID', $siteId);
// Умовний рендеринг у шаблоні
if (SITE_ID === 's2') {
// Логіка для оптового сайту
}
Мовні файли. Переклади, специфічні для шаблону, зберігаються в /local/templates/{template}/lang/{lang}/. 1С-Бітрікс завантажує їх автоматично при використанні GetMessage().
Терміни
| Конфігурація | Термін |
|---|---|
| Налаштування 2 шаблонів (базова структура) | 1–2 дні |
| Перенесення наявного дизайну в структуру мультисайту | 2–4 дні |
| Розробка шаблонів з нуля для 2–3 сайтів | 5–10 днів |







