Блог Горошко Андрея 1C-Битрикс Асинхронные операции и Bitrix\Main\Composite\BufferArea: Тонкая настройка композита

Асинхронные операции и Bitrix\Main\Composite\BufferArea: Тонкая настройка композита

Средний рейтинг
Еще нет оценок

Мы уже касались createFrame, но класс Bitrix\Main\Composite\BufferArea предоставляет больше возможностей для контроля над динамическими зонами.

1. Явное указание контейнера (setContainerId)

По умолчанию Битрикс сам создает div с уникальным ID вокруг динамической зоны.

Но иногда это ломает верстку (например, внутри ul или table). Вы можете указать существующий контейнер.

<div id="my-basket-container" class="header-basket">
    <?
    $frame = $this->createFrame("my-basket-container", false); // false = не создавать обертку
    ?>
        В корзине: <?=$count?>
    <?
    $frame->end();
    ?>
</div>

Теперь Битрикс будет искать div#my-basket-container и обновлять его содержимое, не вставляя лишних тегов.

2. Сложная логика заглушки (beginStub)

Заглушка — это то, что видит пользователь и поисковый робот. Она должна быть максимально похожа на итоговый контент, чтобы не было «прыжков» интерфейса (Layout Shift).

$frame = $this->createFrame()->begin();
    // ДИНАМИКА (видят авторизованные)
    echo "Привет, " . $USER->GetFirstName();
    
$frame->beginStub();
    // ЗАГЛУШКА (видят гости и роботы)
    // Здесь можно вывести "скелетон" загрузки или кнопку входа
    echo '<span class="skeleton-loader"></span>';
    
$frame->end();

3. Отмена композита для зоны (setBrowserStorage)

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

$frame = $this->createFrame();
$frame->setBrowserStorage(false); // Всегда запрашивать с сервера

Вывод:
Класс BufferArea (возвращаемый методом createFrame) дает верстальщику и разработчику полный контроль над тем, как сайт ведет себя в композитном режиме.

Используйте setContainerId, чтобы сохранить чистоту верстки, и качественные «стабы» для идеального UX.

BufferArea, композитный сайт, динамический контент, setContainerId, стабовый контент, createFrame, оптимизация битрикс.

Мой рейтинг:

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

Related Post

Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)

Средний рейтинг Еще нет оценок Работа с URL — рутинная задача: добавить GET-параметр, удалить «мусор», получить домен. В старом ядре использовались функции вроде $APPLICATION->GetCurPageParam. В D7 появился специализированный класс \Bitrix\Main\Web\Uri, который делает

Как работать с HL-блоками в 1С-БитриксКак работать с HL-блоками в 1С-Битрикс

Средний рейтинг Еще нет оценок В этой статье я расскажу вам, как работать с HL-блоками в 1С-Битрикс, используя API Bitrix. HL-блоки (Highload-блоки) — это специальные сущности, которые позволяют хранить и

CUserOptions: Сохранение личных настроек интерфейса пользователяCUserOptions: Сохранение личных настроек интерфейса пользователя

Средний рейтинг Еще нет оценок Как запомнить, что пользователь свернул этот блок? Или что он выбрал режим отображения «Плиткой», а не «Списком»? Для хранения таких мелких интерфейсных настроек, привязанных к