Блог Горошко Андрея 1C-Битрикс Композитный режим в Битрикс: setFrameMode и createFrame для динамического контента

Композитный режим в Битрикс: setFrameMode и createFrame для динамического контента

Композитный режим — уникальная технология Битрикс, позволяющая отдавать пользователю статический HTML мгновенно, а динамические данные (корзина, приветствие «Привет, Иван») подгружать фоновым AJAX-запросом.

Чтобы это работало, компоненты должны быть адаптированы.

1. Включение поддержки композита (setFrameMode)

Если ваш компонент выводит одинаковый контент для всех пользователей (например, список новостей), достаточно просто сообщить системе, что он поддерживает композит.

В файле component.php (или class.php):

// В начале executeComponent или component.php
$this->setFrameMode(true);
  • true: Компонент поддерживает композит. Его HTML будет закэширован в статике.
  • false: Компонент не поддерживает композит (по умолчанию). При встрече такого компонента на странице композит для всей страницы будет отключен.

2. Динамические зоны (createFrame)

Если компонент содержит данные, зависящие от пользователя (например, «В корзине 5 товаров»), его нельзя кэшировать целиком. Нужно выделить динамическую зону.

Это делается в шаблоне компонента (template.php).

// template.php

// 1. Создаем фрейм
$frame = $this->createFrame()->begin('Загрузка...'); 
// 'Загрузка...' - это заглушка, которую увидит пользователь до подгрузки данных.
// Можно передать пустую строку или HTML-скелетон.
?>

<div class="basket-block">
    В вашей корзине: <?= $arResult['ITEMS_COUNT'] ?> товаров.
    На сумму: <?= $arResult['TOTAL_PRICE'] ?>
</div>

<?
// 2. Закрываем фрейм
$frame->end();
?>

Как это работает:

  1. Битрикс кэширует страницу целиком.
  2. В месте вызова createFrame в кэш записывается заглушка («Загрузка…»).
  3. Для каждого пользователя браузер получает статику мгновенно.
  4. Сразу после этого отправляется фоновый AJAX-запрос к Битриксу.
  5. Битрикс выполняет компоненты, находит динамические зоны, генерирует для них актуальный HTML (для конкретного Ивана) и отправляет обратно.
  6. JS на клиенте заменяет заглушку на актуальный HTML.

Динамика без заглушки (stub)

Иногда заглушка не нужна, мы хотим показать «дефолтный» контент (например, кнопку «Войти»), а для авторизованных заменить её на «Профиль».

$frame = $this->createFrame()->begin(); 
// Контент по умолчанию (попадет в кэш)
?>
    <a href="/login/">Войти</a>
<?
$frame->beginStub(); 
// Контент динамический (придет аяксом и заменит дефолтный)
?>
    Привет, <?= $USER->GetFirstName() ?>! <a href="/logout/">Выйти</a>
<?
$frame->end();

Вывод:
Адаптация под композит — обязательный шаг для любого компонента.

  1. Если компонент статичен — $this->setFrameMode(true).
  2. Если есть личные данные — выделяем их в $this->createFrame().
    Это обеспечивает молниеносную загрузку сайта при сохранении персонального контента.

Композит Битрикс, Автокомпозит, setFrameMode, createFrame, динамическая зона, кэширование, ускорение сайта.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Верстка всплывающей боковой корзины (Drawer Checkout) без перехода на другую страницуВерстка всплывающей боковой корзины (Drawer Checkout) без перехода на другую страницу

Профессиональный frontend-инжиниринг и адаптивная верстка макетов под 1С-Битрикс являются ключевыми факторами высокой конверсии и удержания покупателей. Услуга «Верстка всплывающей боковой корзины (Drawer Checkout) без перехода на другую страницу» обеспечивает удобное

Разработка интернет-магазина на 1С-Битрикс с автоматической маркировкой Честный ЗнакРазработка интернет-магазина на 1С-Битрикс с автоматической маркировкой Честный Знак

Реализация функционала «с автоматической маркировкой Честный Знак» на платформе 1С-Битрикс позволяет кардинально повысить конверсию магазина, автоматизировать рутинные операции менеджеров и предоставить покупателям безупречный сервис. передача кодов маркировки DataMatrix в ОФД

Разработка личного кабинета дилера с выгрузкой актов сверки взаиморасчетов из 1СРазработка личного кабинета дилера с выгрузкой актов сверки взаиморасчетов из 1С

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Разработка