Кастомизация шаблона: template.php, result_modifier, epilog
Шаблон компонента включает верстку template.php, предварительную обработку данных result_modifier.php и файл component_epilog.php, исполняемый на каждом хите независимо от кеша. Установка заголовков страницы, цепочки навигации и мета-тегов обязана производиться в эпилоге, иначе при отдаче данных из кеша они будут потеряны.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
template.php — основной шаблон
-
2
result_modifier.php — модификация данных
-
3
component_epilog.php — после шаблона
-
4
style.css, script.js — ресурсы
Материалы
Официальная документация
Проверь себя
Скопировали шаблон news.list в /local/templates/main/components/bitrix/news.list/cards/, а сайт показывает старую вёрстку. Почему?
Во втором аргументе IncludeComponent осталась пустая строка, и ядро ищет .default. Шаблон выбирается по имени папки: либо назвать копию .default, либо указать cards в вызове.
В result_modifier.php вызвали SetTitle(): на разработке работает, на проде заголовок пустой. Где причина?
result_modifier.php выполняется только при сборке кеша вместе с шаблоном; на закешированном хите его нет. Заголовок, цепочку навигации и всё, что нужно на каждом хите, ставят в component_epilog.php.
Чем $arResult в component_epilog.php отличается от $arResult в template.php?
В эпилоге массив приходит из кеша, и в нём только ключи из SetResultCacheKeys() в class.php плюс $templateData, который шаблон собрал перед кешированием. В template.php доступен весь $arResult вместе с правками result_modifier.
Зачем копировать шаблон целиком, если нужно поменять один класс в разметке?
Шаблон — неделимая папка: ядро подключает template.php, style.css и script.js из одного места, частично переопределить его нельзя. Копия в /local под своим именем переживёт обновления, правка в /bitrix/components — нет.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить