Ви закінчили розробку каталогу на 1С-Бітрікс, але SEF-URL не працюють як треба: детальні сторінки отримують URL виду /catalog/?ELEMENT_ID=123. Пошукові системи не індексують такі адреси, а клієнти не запам'ятовують посилання. Додавання нового типу сторінок (наприклад, пошуку) вимагає переписування логіки компонента. Це типова біль при роботі зі звичайними компонентами. Комплексний компонент (bitrix:news, bitrix:catalog) вирішує ці проблеми одразу: чітка структура URL, розділення логіки, управління кешем.
Ми реалізували понад 50 комплексних компонентів для інтернет-магазинів, корпоративних порталів та B2B-кабінетів. Наш досвід гарантує стабільність на високих навантаженнях та легку підтримку. Нижче — технічні деталі, які допоможуть зрозуміти, чому варто замовити розробку комплексного компонента.
Розробка комплексного компонента 1С-Бітрікс: від SEF до кешування
Комплексний компонент — це точка монтування, яка автоматично вибирає потрібний дочірній компонент залежно від URL. Розуміння цієї механіки — ключ до правильної реалізації багатосторінкового функціоналу.
Як працює механізм SEF в комплексному компоненті?
SEF-URL налаштовується через файл page_templates.php, де задаються шаблони URL для кожного типу сторінки. Наприклад, для детальної сторінки — #ELEMENT_CODE#/. В component.php диспетчер аналізує поточний URL і зіставляє його з шаблонами, визначаючи тип сторінки та витягуючи змінні.
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); $arSefTemplates = [ 'list' => '', 'detail' => '#ELEMENT_CODE#/', 'section' => '#SECTION_CODE#/', 'search' => 'search/', ]; Бітрікс використовує $arCurrentValues['PAGE_ELEMENT_TYPE'] для зберігання визначеного типу сторінки. Комплексний компонент у 3 рази спрощує додавання нових сторінок порівняно зі звичайним.
Диспетчер component.php
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); $this->setFrameMode(true); if ($arParams['SEF_MODE'] === 'Y') { // ... парсинг поточного URL $page = 'list'; if (isset($arVariables['ELEMENT_CODE']) && $arVariables['ELEMENT_CODE']) { $page = 'detail'; } elseif (isset($arVariables['SECTION_CODE']) && $arVariables['SECTION_CODE']) { $page = 'section'; } } else { $page = $arParams['PAGE_ELEMENT_TYPE']; } $this->includePageTemplate($page); Дочірні компоненти та кешування
Файл templates/.default/page_templates/list.php викликає дочірній компонент списку. Критично важливо передавати параметр $component (посилання на батьківський компонент) — інакше кеш дочірніх компонентів не буде скидатися при змінах у батьківському.
<?php $APPLICATION->IncludeComponent('custom:my.section.list', '', [ 'IBLOCK_ID' => $arParams['IBLOCK_ID'], 'PAGE_SIZE' => $arParams['PAGE_SIZE'], 'CACHE_TIME' => $arParams['CACHE_TIME'], 'SET_TITLE' => 'Y', 'SET_BROWSER_TITLE' => 'Y', // ... ], $component); Кеш-ключ дочірнього компонента повинен включати змінні з URL (ELEMENT_CODE, SECTION_CODE), інакше всі сторінки показуватимуть однакову кешовану відповідь. Комплексний компонент забезпечує теговане кешування: при зміні одного елемента скидається лише його кеш, а не всього розділу.
Чому важливі права доступу та обробка 404?
Якщо розділ вимагає авторизації (особистий кабінет, B2B), перевірка прав виконується в диспетчері до виклику дочірніх компонентів:
<?php global $USER; if (!$USER->IsAuthorized()) { LocalRedirect(SITE_DIR . 'login/?backurl=' . urlencode($APPLICATION->GetCurPage())); } При відсутності елемента або розділу компонент повинен віддавати коректний 404, що критично для SEO та користувацького досвіду. Неправильна обробка 404 — часта помилка, через яку пошукові системи індексують «биті» сторінки. Офіційна документація 1С-Бітрікс рекомендує завжди перевіряти існування елемента перед формуванням сторінки.
Порівняння звичайного та комплексного компонента
| Параметр | Звичайний компонент | Комплексний компонент |
|---|---|---|
| SEF-URL | Налаштовується вручну, складно | Автоматично, шаблони URL |
| Кешування | Індивідуальне для кожного виклику | Теговане, з урахуванням батьківського |
| Додавання нових сторінок | Вимагає переписування логіки | Просте додавання шаблону |
| Підтримка | Висока зв'язаність | Модульна архітектура |
Комплексний компонент у 2–3 рази скорочує час на доопрацювання та збільшує продуктивність за рахунок ефективного кешування.
Як створити комплексний компонент: покрокова інструкція
- Аналіз вимог та структура URL. Визначте, які типи сторінок потрібні (список, детальна, розділ, пошук) та їх URL-шаблони.
- Створення SEF-шаблонів. У файлі
page_templates.phpпропишіть шаблони для кожного типу. - Написання диспетчера component.php. Реалізуйте логіку визначення поточного типу сторінки та виклику відповідного шаблону.
- Розробка дочірніх компонентів. Для кожного типу створіть свій шаблон з викликом
IncludeComponentта передачею $component. - Налаштування кешування. Додайте тегований кеш та переконайтеся, що дочірні компоненти прив'язані до батьківського.
- Обробка помилок та прав доступу. Перевірте 404, авторизацію, мультисайтовість.
- Тестування. Перевірте всі сценарії: пусті списки, неіснуючі елементи, права доступу.
- Документація. Опишіть архітектуру, параметри та приклади виклику.
Типові помилки при розробці комплексного компонента
- Забувають передати
$componentв дочірні компоненти — кеш не скидається. - Не очищають кеш після додавання нових шаблонів.
- Ігнорують мультисайтовість — на різних сайтах може знадобитися різна логіка.
- Не перевіряють права доступу в диспетчері — користувач може отримати 404 замість форми входу.
Що входить в роботу?
На виході ви отримуєте:
- Технічне завдання з архітектурою компонента
- Вихідний код компонента з коментарями
- SEF-шаблони для всіх типів сторінок
- Налаштоване кешування та права доступу
- Документацію з інтеграції та підтримку протягом 1 місяця
Орієнтовні терміни: для 2 типів сторінок (list + detail) — 1–2 тижні, для 3–4 типів — 2–4 тижні, для повноцінного розділу з AJAX та фільтрами — 4–8 тижнів. Конкретна вартість розраховується індивідуально. Зв'яжіться з нами для консультації — ми допоможемо вибрати оптимальну архітектуру під вашу задачу.
| Тип | Що реалізується | Термін |
|---|---|---|
| 2 типи сторінок (list + detail) | SEF, кеш, параметри, шаблони | 1–2 тижні |
| 3–4 типи сторінок | + розділ, пошук, права доступу | 2–4 тижні |
| Повноцінний розділ (ОК, каталог) | + AJAX, авторизація, фільтри | 4–8 тижнів |
Комплексний компонент — це правильна архітектура для будь-якого розділу сайту, який планують підтримувати та розвивати. Він у рази спрощує додавання нових сторінок та інтеграцій. Отримайте консультацію — ми розповімо, як покращити ваш проект.
Для поглибленого вивчення рекомендуємо офіційну документацію 1С-Бітрікс по компонентам та Wikipedia.







