Разработка мультибрендовой витрины на 1С-Битрикс
Мультибрендовая витрина — это магазин, где несколько торговых марок представлены как отдельные «мини-шопы» внутри одной платформы. Покупатель видит раздел Nike, раздел Adidas, раздел Puma — каждый со своим визуальным стилем, своими баннерами и своей навигацией. Но корзина, оформление заказа и аккаунт пользователя общие. Это не просто категории каталога, это отдельные пространства внутри одного сайта.
Архитектура хранения данных
Каталог мультибрендовой витрины строится на базе инфоблока каталога Битрикс с иерархией разделов. Структура:
b_iblock_section (каталог)
├── BRAND_ID: 1 (Nike)
│ ├── Кроссовки
│ ├── Одежда
│ └── Аксессуары
├── BRAND_ID: 2 (Adidas)
│ ├── Кроссовки
│ └── Одежда
Бренд — это верхний уровень раздела или отдельный инфоблок брендов с привязкой к товарам. Второй вариант гибче: один инфоблок «Бренды» содержит метаданные бренда (логотип, цвета, описание, баннеры), а каждый товар инфоблока каталога имеет свойство BRAND_ID типа «Элемент».
Инфоблок «Бренды» (IBLOCK_BRANDS):
-
LOGO— SVG или PNG логотип -
BANNER_DESKTOP,BANNER_MOBILE— баннеры раздела бренда -
PRIMARY_COLOR,ACCENT_COLOR— цвета для CSS-переменных -
DESCRIPTION— история бренда -
BRAND_URL— официальный сайт -
OFFICIAL_DEALER— статус авторизованного дилера (флаг)
Динамический брендинг раздела
Когда пользователь открывает раздел бренда, шаблон меняет цвета, шапку и баннер. Это реализуется через CSS-переменные, которые генерируются на PHP и подставляются в <head>:
// В template.php раздела бренда
$brandId = $arResult['SECTION']['UF_BRAND_ID']; // кастомное поле раздела
$brand = BrandTable::getByPrimary($brandId)->fetch();
if ($brand) {
$APPLICATION->SetAdditionalCSS('
:root {
--brand-primary: ' . htmlspecialchars($brand['PRIMARY_COLOR']) . ';
--brand-accent: ' . htmlspecialchars($brand['ACCENT_COLOR']) . ';
}
');
}
Логотип бренда в шапке страницы раздела подставляется вместо основного логотипа сайта. В остальных разделах — обычный логотип. Это делается через глобальную переменную в шаблоне:
// В header.php шаблона
global $currentBrand;
echo $currentBrand
? '<img src="' . $currentBrand['LOGO_URL'] . '" alt="' . $currentBrand['NAME'] . '">'
: '<img src="/local/templates/main/img/logo.svg" alt="Магазин">';
Фильтрация и навигация по бренду
Внутри раздела бренда фильтр каталога работает только в рамках товаров данного бренда. Стандартный компонент умного фильтра bitrix:catalog.smart.filter нужно параметризовать:
$APPLICATION->IncludeComponent('bitrix:catalog.smart.filter', '', [
'IBLOCK_ID' => CATALOG_IBLOCK_ID,
'SECTION_ID' => $brandSectionId, // корневой раздел бренда
'DEPTH_LEVEL' => 5, // вложенные подразделы бренда
'HIDE_NOT_SELECTED' => 'Y',
// ...
]);
Умный фильтр рассчитывает доступные значения (b_catalog_smart_filter) только для товаров указанного раздела — это корректно работает из коробки.
Хлебные крошки показывают путь: «Главная → Nike → Кроссовки». Компонент bitrix:breadcrumb работает автоматически при правильной структуре разделов.
Страница бренда: лендинг + каталог
Страница бренда — это не просто список товаров. Это витрина с: баннером бренда, историей марки, ключевыми коллекциями, новинками, хитами продаж.
Компоновка страницы бренда через $APPLICATION->IncludeComponent():
// brand.php — отдельный шаблон страницы
IncludeComponent('custom:brand.page', '', ['BRAND_ID' => $brandId]);
// Внутри компонента:
// - Баннер бренда
// - Блок "О бренде" из DESCRIPTION
// - Компонент catalog.section со списком товаров
// - Блок новинок (фильтр по дате добавления)
// - Блок хитов (фильтр по количеству продаж)
Сравнение товаров между брендами
Стандартный компонент сравнения bitrix:catalog.compare.buy работает в рамках одного инфоблока. Для мультибрендовой витрины сравнение должно работать между брендами при схожих характеристиках (например, кроссовки Nike vs Adidas vs Puma).
Технически это реализуемо: список сравниваемых товаров хранится в сессии, характеристики берутся из свойств инфоблока. Сложность — разные бренды могут иметь разный набор характеристик. Решение: фиксированный набор «общих» свойств для сравнения (материал верха, тип подошвы, тип колодки), отдельно — уникальные свойства каждого бренда.
Управление контентом брендовых разделов
Если у каждого бренда есть свой менеджер, нужно разграничение прав:
// Группа "Менеджер бренда Nike" имеет права только на элементы с BRAND_ID = 1
// Настраивается через права доступа к инфоблоку на уровне разделов
CIBlock::SetPermission(CATALOG_IBLOCK_ID, $nikeSectionId, $nikeManagerGroupId, 'W');
Стандартное разграничение прав Битрикс позволяет давать доступ на уровне разделов инфоблока — менеджер Nike видит и редактирует только товары в разделе Nike.
Аналитика по брендам
Владельцам витрины нужна разбивка продаж и трафика по брендам:
-
Трафик: события страниц по бренду передаются в Яндекс.Метрику через
dataLayerс параметромbrand_id -
Продажи: поле
BRAND_IDзаписывается в свойства позиций заказа (b_sale_order_props), агрегация через SQL - Конверсия: воронка по бренду в BI-инструменте (ClickHouse + Metabase или Power BI)
SEO мультибрендовой витрины
Каждый бренд — потенциальная точка входа с поиска. Страница бренда должна оптимизироваться под запросы типа «купить Nike в Москве»:
- SEO-описание раздела бренда в
b_iblock_section.DESCRIPTION - Отдельные
META_TITLEиMETA_DESCRIPTIONдля страницы бренда -
BreadcrumbListразметка Schema.org - Canonical на страницу бренда при фильтрации
Сроки
| Масштаб | Что входит | Срок |
|---|---|---|
| 3–5 брендов, базовый брендинг | Структура разделов, страницы брендов, фильтр | 3–5 недель |
| 5–20 брендов | + динамические цвета, ЛК бренд-менеджеров, аналитика | 6–10 недель |
| 20+ брендов, маркетплейс | + кабинет партнёра, финансовый расчёт, API | 12–20 недель |
Мультибрендовая витрина усложняет каталог, но создаёт конкурентное преимущество: покупатель приходит не за конкретным товаром, а в «место», где сравнивают несколько брендов одного типа продукта.







