Ми не раз стикалися з ситуацією: клієнт запускає другий (третій) магазин на тій же установці Бітрікс, а шаблон один — верстка ламається, кастомізація перетворюється на пекло. Помилка в тому, що кожен сайт отримує свій дизайн, але наслідування не налаштоване. Розбираємо, як правильно організувати шаблони в мультисайті, не витрачаючи час на дублі. Наприклад, в одному проєкті через спільний шаблон правки під оптовий сайт зламали картку товару роздрібу, що призвело до простою 3 дні та втрат близько 15% замовлень. Окремі шаблони в мультисайті скорочують час на внесення правок у 4 рази порівняно з єдиним шаблоном.
Чому важливо розділяти шаблони?
Якщо кілька сайтів живуть в одній копії Бітрікс, але використовують один шаблон, рано чи пізно ви впираєтеся в конфлікт стилів, правки під один сайт ламають інший. Окремі шаблони дають гнучкість: роздрібний сайт може мати свою картку, оптовий — іншу, мобільна версія — третю. Спільна логіка при цьому виділяється в базовий шаблон.
Структура шаблонів у мультисайті
Бітрікс зберігає шаблони в /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';
Як ми налаштовуємо шаблони: реальний кейс
Нещодавно налаштовували мультисайт для клієнта: роздрібний магазин (шаблон retail) і оптова площадка (wholesale) на одній базі. В base винесли спільний хедер, футер, скрипти аналітики. Для retail кастомізували картку товару — замінили шаблон catalog.element у своїй папці. Для wholesale — прибрали ціни й додали кнопку "Запросити КП". Усе запрацювало без копіювання зайвого коду. Згідно з документацією 1С-Бітрікс, мультисайтова конфігурація підтримує окремі шаблони через налаштування кожного сайту.
Як прив'язати компоненти до шаблону?
Для кожного компонента можна задати різний шаблон у різних сайтах. Шаблони компонентів шукаються в порядку:
-
/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().
Порівняння підходів: спільний vs окремі шаблони
| Критерій | Один шаблон для всіх | Окремі шаблони (наш підхід) |
|---|---|---|
| Гнучкість дизайну | Обмежена, конфлікти стилів | Максимальна, кожен сайт унікальний |
| Складність підтримки | Висока, правки ламають інші сайти | Низька, ізольовані зміни |
| Дублювання коду | Немає явного, але багато умов | Мінімально за рахунок базового шаблону |
| Швидкість розробки нових сайтів | Повільна, правки в спільний код | Швидка, успадковується основа |
Розгорнутий приклад структури
Для проєкту з трьома сайтами (роздріб, опт, мобільний) оптимальна структура:
/local/templates/
base/
header.php
footer.php
style.css
retail/
header.php (include base/header.php з доробками)
components/bitrix/catalog.element/.default/template.php
wholesale/
header.php (include base/header.php, прибрана корзина)
components/bitrix/catalog.element/.default/template.php (без цін)
mobile/
header.php (адаптивний)
style.css
Що входить у роботу
- Аналіз поточної архітектури шаблонів і карти сайтів
- Проєктування структури
/local/templates/з базовим і дочірніми шаблонами - Міграція існуючого дизайну в нову структуру
- Налаштування наслідування та перевизначення компонентів
- Перевірка крос-браузерності та мобільної адаптації
- Документування структури для подальшої підтримки
- Передача доступів і навчання команди клієнта
Як ми це робимо: процес
- Аналітика — дивимося кількість сайтів, їх спільні та унікальні елементи.
- Проєктування — створюємо макет структури шаблонів.
- Реалізація — розгортаємо базовий шаблон і дочірні.
- Тестування — перевіряємо кожен сайт на коректну роботу.
- Деплой — викочуємо на бойовий сервер.
Терміни орієнтовно
| Конфігурація | Термін |
|---|---|
| Налаштування 2 шаблонів (базова структура) | 1–2 дні |
| Перенесення існуючого дизайну в структуру мультисайту | 2–4 дні |
| Розробка шаблонів з нуля для 2–3 сайтів | 5–10 днів |
Вартість розраховується індивідуально після оцінки обсягу. Ми працюємо з проєктами будь-якої складності — отримайте консультацію по вашому проєкту, ми дамо точні терміни та оцінку. Замовте аудит поточної структури шаблонів, щоб виявити приховані проблеми.
Наш досвід і гарантії
Більше п'яти років займаємося розробкою на 1С-Бітрікс, виконали понад 40 проєктів з мультисайтами. Даємо гарантію на коректну роботу шаблонів та їх сумісність з оновленнями системи. Пишіть, оцінимо ваш проєкт і дамо точні терміни.







