Налаштування окремих шаблонів для різних сайтів 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування окремих шаблонів для різних сайтів 1С-Бітрікс
Простий
~1 день
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

Ми не раз стикалися з ситуацією: клієнт запускає другий (третій) магазин на тій же установці Бітрікс, а шаблон один — верстка ламається, кастомізація перетворюється на пекло. Помилка в тому, що кожен сайт отримує свій дизайн, але наслідування не налаштоване. Розбираємо, як правильно організувати шаблони в мультисайті, не витрачаючи час на дублі. Наприклад, в одному проєкті через спільний шаблон правки під оптовий сайт зламали картку товару роздрібу, що призвело до простою 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С-Бітрікс, мультисайтова конфігурація підтримує окремі шаблони через налаштування кожного сайту.

Як прив'язати компоненти до шаблону?

Для кожного компонента можна задати різний шаблон у різних сайтах. Шаблони компонентів шукаються в порядку:

  1. /local/templates/{site_template}/components/{namespace}/{component}/{template}/
  2. /local/components/{namespace}/{component}/templates/{template}/
  3. /bitrix/templates/{site_template}/components/...
  4. /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/ з базовим і дочірніми шаблонами
  • Міграція існуючого дизайну в нову структуру
  • Налаштування наслідування та перевизначення компонентів
  • Перевірка крос-браузерності та мобільної адаптації
  • Документування структури для подальшої підтримки
  • Передача доступів і навчання команди клієнта

Як ми це робимо: процес

  1. Аналітика — дивимося кількість сайтів, їх спільні та унікальні елементи.
  2. Проєктування — створюємо макет структури шаблонів.
  3. Реалізація — розгортаємо базовий шаблон і дочірні.
  4. Тестування — перевіряємо кожен сайт на коректну роботу.
  5. Деплой — викочуємо на бойовий сервер.

Терміни орієнтовно

Конфігурація Термін
Налаштування 2 шаблонів (базова структура) 1–2 дні
Перенесення існуючого дизайну в структуру мультисайту 2–4 дні
Розробка шаблонів з нуля для 2–3 сайтів 5–10 днів

Вартість розраховується індивідуально після оцінки обсягу. Ми працюємо з проєктами будь-якої складності — отримайте консультацію по вашому проєкту, ми дамо точні терміни та оцінку. Замовте аудит поточної структури шаблонів, щоб виявити приховані проблеми.

Наш досвід і гарантії

Більше п'яти років займаємося розробкою на 1С-Бітрікс, виконали понад 40 проєктів з мультисайтами. Даємо гарантію на коректну роботу шаблонів та їх сумісність з оновленнями системи. Пишіть, оцінимо ваш проєкт і дамо точні терміни.

Чому верстка сайтів на 1С-Бітрікс вимагає професіоналізму?

Відкриваєте template.php у попереднього підрядника — а там SQL-запити, бізнес-логіка та inline-стилі в одному файлі. На кожному другому проєкті, який ми беремо на підтримку, код шаблонів виглядає як звалище: кеш не працює, додати нову фічу — переписуй все. Виправлення такої верстки може коштувати чимало, а втрачений виторг через зламаний кошик у пік сезону може сягати десятків тисяч гривень.

Ми — команда сертифікованих розробників 1С-Бітрікс із десятирічним досвідом. За нашими плечима понад 50 успішних проектів верстки та підтримки. Наш підхід строго розділяє: логіка — в result_modifier.php або component_epilog.php, представлення — в template.php. Жодного CIBlockElement::GetList в шаблоні. Це скорочує час правок на 30–40% та виключає типові помилки, які ламають кеш. Подібну проблему виправляли клієнту з інтернет-магазину — він місяць не міг оновити блок «Акції». Після налаштування тегованого кеша правки вставали за хвилину, а не за день.

Отримайте безкоштовний аудит вашого проекту — зв'яжіться з нами.

Як правильно організувати шаблони компонентів?

Кастомний шаблон — це не один файл, а структура з п’яти-шести файлів:

  • template.php — тільки HTML та виведення $arResult
  • result_modifier.php — підготовка даних, додаткові вибірки
  • component_epilog.php — код після кешування (лічильники, динаміка)
  • style.css та script.js — підключаються через Asset::getInstance()->addCss() та addJs() (не через <link> — інакше ламається об'єднання)
  • .parameters.php — параметри візуального редактора

Приклад структури для каталогу:

local/templates/your_template/components/bitrix/catalog.section/.default/
├── template.php
├── result_modifier.php
├── component_epilog.php
├── style.css
├── script.js
└── .parameters.php

Типові шаблони, які верстаємо під ключ:

Компонент Що робимо
catalog.section та catalog.element Перемикання вигляду (плитка/список/таблиця), lazy load для зображень, srcset для ретини
sale.basket.basket AJAX-оновлення без перезавантаження, міні-кошик через sale.basket.basket.line
menu Мегаменю з кешуванням за розділами, відкладене завантаження підменю
search.title Автопідказки з дебаунсом 300 мс, прев'ю товарів у дропдауні
breadcrumb Мікророзмітка BreadcrumbList за Schema.org

Кешування: чому воно ламається і як лагодимо?

Компонентне кешування в Бітрікс ламається однією помилкою: вивели ім'я користувача всередині кешованого каталогу — всі бачать одне ім'я. Рішення — component_epilog.php для динамічних вставок.

Tagged cache ($this->setResultCacheKeys, CIBlock::clearIblockTagCache) налаштовуємо обов'язково. Змінили товар — очищується кеш лише цього товару, а не всього розділу. На проєкті з 50 000 товарів це дає приріст швидкості на 40% — в 1.4 раза швидше порівняно з повним скиданням.

Реальний кейс. Наш клієнт скаржився — на сторінці каталогу у всіх один кошик. Виявилося, попередній розробник вивів $_SESSION['BASKET'] всередині template.php компонента catalog.section. Компонент кешувався на годину — кошик застиг. Перенесли виведення в component_epilog.php, налаштували тегований кеш на sale.basket.basket.line. Сторінка не втратила у швидкості, кошик став актуальним. Збитки від несправного кошика в пік сезону могли бути значними, а вартість виправлення — помірною.

CSS-підходи: BEM, Tailwind або гібрид?

Для великих проєктів (30+ шаблонів) використовуємо BEM.product-card__price, .product-card--featured. Стилі ізольовані, конфліктів немає. У Бітрікс обгортки з класами bx-component не чіпаємо — обгортаємо свій BEM-блок всередині.

Для типових завдань (лендінги, адмінки) беремо Tailwind 3+ з PurgeCSS — підсумковий CSS 10–30 КБ замість сотень. Дизайн-токени в tailwind.config.js фіксують кольори, шрифти, відступи в одному місці.

На більшості проєктів застосовуємо гібрид: BEM для структурних компонентів (каталог, картка, чекаут), Tailwind для утилітарних речей (відступи, flex-розкладки). Межу обговорюємо з командою заздалегідь.

Як досягти Core Web Vitals при верстці сайтів на Бітрікс?

Critical CSS — виділяємо стилі першого екрану через пакет critical, інлайнимо в <head>. Решта завантажується асинхронно через media="print" onload="this.media='all'". LCP на мобільних скорочується на 1–1.5 секунди.

Зображення — головне гальмо. Використовуємо <picture> з WebP та JPEG-фолбеком. loading="lazy" для всього нижче першого екрану. width та height явно прописані — CLS = 0. Обробник в urlrewrite.php генерує WebP на льоту.

Мініфікація та стиснення. CSS та JS через Vite або вбудоване об'єднання Бітрікс. Brotli на nginx (brotli_comp_level 6) — на 15–20% ефективніше за gzip. Кешування статики: expires 1y + версіонування через query string.

Ми готові зробити аудит вашого проєкту та запропонувати конкретні кроки. Закажіть консультацію.

Що входить в послугу верстки сайтів на 1С-Бітрікс?

Після замовлення верстки шаблону або адаптації готового рішення передаємо:

  • Вихідні коди шаблонів компонентів з розділенням на template.php, result_modifier.php, epilog
  • CSS та JS, підключені через Asset — без інлайн-стилів
  • Налаштоване кешування з тегами
  • Документацію за структурою та параметрами
  • Доступ до Git-репозиторію з історією змін
  • Навчання вашого розробника: як правити шаблон без втрати оновлюваності

Гарантуємо відповідність Core Web Vitals та кросбраузерність. Закріплюємо інженера з досвідом 10+ років.

Типові помилки при верстці, які ми виправляємо - Inline-стилі в шаблонах — ламають кешування та об'єднання CSS. - Відсутність `component_epilog.php` — динамічний контент застигає. - Неправильне підключення скриптів через `