Компоненты Битрикс: два режима кеша и данные между шаблоном и родителем
Две схемы кеширования в component.php
Типовые комплекты ядра нередко сохраняют на диск и подготовленный HTML, и дерево данных. В кастомных компонентах уместнее держать в кеше только $arResult, если в шаблоне нужны побочные эффекты на каждый запрос или логика без «печени» статикой.
В «полном» варианте внутрь startResultCache кладут выборку и сразу $this->includeComponentTemplate(). В «данных» режиме после генерации набора ключей вызывают $this->EndResultCache(), а сам шаблон подключают уже после закрывающего фрагмента кеша.
Эпилог и доступ к данным из кешированного вывода
component_epilog.php выполняется на каждом попадании, даже если HTML уже прочитан из файла. Чтобы в нём были нужные ветви $arResult, в result_modifier.php обращайтесь к $this->__component->SetResultCacheKeys() и подтягивайте отсутствующие элементы через $this->__component->arResult.
Данные в родителе комплексного компонента
Из простого компонента, встроенного в комплексную оболочку, без повторной выборки можно дописать вычисляемые ключи родителя через доступный объект $this->__parent там, где такой мост поддержан исполнителем.
Пустое имя шаблона
Связка через InitComponentTemplate позволяет корректно вернуть false, когда путь недоступен, вместо шумного сообщения навроде поиска пустого кода страницы.
Спрятать кнопку настройки
Пятый аргумент вызова $APPLICATION->IncludeComponent() с параметром сокрытых иконок отключает инструменты режима правки вокруг включений из общих включений.
if ($this->startResultCache(false, ['cache_sig' => $stamp])) {
if (!\Bitrix\Main\Loader::includeModule('iblock')) {
$this->abortResultCache();
return;
}
$this->EndResultCache();
}
$this->IncludeComponentTemplate(); Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии