Налаштування мультисайтовості 1С-Бітрікс
Мультисайтовість у Бітриксі — це коли на одній встановці (одна кодова база, одна БД) працюють кілька сайтів з різним контентом, дизайном або мовою. Типовий кейс: основний сайт компанії та окремий лендинг для акції, або російська та англійська версії магазину. Без мультисайтовості доводиться поднімати окремі інстанси Бітрікса — з подвоєнням видатків на ліцензію, обслуговування та синхронізацію даних.
Як влаштована мультисайтовість всередині
Кожен сайт у Бітриксі — це запис у таблиці b_lang. Поле LID (двосимвольний ідентифікатор: s1, s2) — ключ, за яким система визначає, який сайт запрошений. Визначення сайту відбувається в bitrix/modules/main/include/prolog_before.php на основі:
-
Доменного імені — поле
SERVER_NAMEу налаштуваннях сайту -
Директорії — поле
DOC_ROOTтаDIR, якщо сайти рознесені по папкам -
Умов у файлі
dbconn.php(застарілий підхід) або черезSITE_IDу.settings.php
Прив'язка контенту до сайту: інфоблоки, розділи каталогу, пункти меню, шаблони — всё прив'язується до LID. Один інфоблок може бути доступний на кількох сайтах, а може — тільки на одному.
Покрокове налаштування
1. Створення сайту. Адміністративна панель → Налаштування → Налаштування продукту → Сайти. Створюємо новий сайт:
-
LID — унікальний двосимвольний код (
s2) - Назва — для ідентифікації в админці
-
Домен —
SERVER_NAME, наприкладpromo.example.com -
Папка сайту —
/якщо окремий домен, або/promo/якщо підпапка -
Шаблон — можна назначити окремий шаблон з
/bitrix/templates/або/local/templates/
2. Налаштування веб-сервера. Для окремого домена потрібен vhost, що вказує на той же DOCUMENT_ROOT:
server {
server_name promo.example.com;
root /home/bitrix/www; # той же корень
# інші директиви ідентичні основному сайту
}
3. Прив'язка інфоблоків. У налаштуваннях кожного інфоблоку — вкладка «Сайти». Відзначаємо, на яких сайтах він доступний. Компоненти bitrix:news.list, bitrix:catalog.section автоматично фільтрують контент за поточним SITE_ID.
4. Шаблони компонентів. Якщо на різних сайтах потрібно різне відображення одного компонента — створюємо шаблон з суфіксом сайту: .default для s1, promo для s2. У шаблоні сайту вказуємо потрібний шаблон компонента.
5. Меню. Файли меню (.menu.php) лежать у корені сайту або підпапці. При мультисайтовості з різними папками — кожен сайт автоматично бере своє меню. При одному корені — використовується компонент bitrix:menu з параметром MENU_CACHE_TYPE та перевіркою SITE_ID.
Частові помилки
Один шаблон на два сайти з різним дизайном. Не варто городити if ($SITE_ID == 's2') у шаблоні — краще створити окремий шаблон. Умови множаться, код стає нечитабельним.
Кеш. Бітрікс кешує контент з прив'язкою до SITE_ID, але якщо вручну формувати ключ кешу в кастомних компонентах — потрібно явно включати SITE_ID в $cacheId. Інакше користувач на s2 побачить контент s1.
Пошта. Поштові шаблони (b_event_message) прив'язуються до сайту. Якщо створили новий сайт, але не прив'язали шаблони листів — сповіщення про замовлення, реєстрацію тощо не будуть уходити. Перевіряється в розділі Налаштування → Поштові подiї.
Налаштування мультисайтовості займає близько одного робочого дня за умови, що архітектура контенту уже продумана — які інфоблоки спільні, які окремі, скільки шаблонів потрібно.







