Битрикс. Файл component_epilog.php
При использовании компонента в Битриксе часто нужно, чтобы компонент не только выводил данные на страницу, но и выполнял некоторые дополнительные действия: изменение заголовка страницы, добавление элементов навигационной цепочки и т. п. Раньше (при работе с версией Битрикса, младшей чем 9.0) для реализации такого поведения необходимо было модифицировать основной файл компонента component.php .
В версии 9.0 в шаблон компонента был добавлен файл component_epilog.php — эпилог компонента. Его особенность в том, что он, в отличие от файлов template.php и result_modifier.php , исполняется при каждом вызове компонента, вне зависимости от наличия кеша. Кроме того, в component_epilog.php доступны привычные массивы $arParams и $arResult .
Как работает компонент
Для начала небольшое описание составных частей среднестатистического компонента в Битрикс:
- component.php — файл с кодом, который формирует данные для шаблона (массив $arResult ) и подключает шаблон. Кроме того, может выполнять какие-либо действия после получения данных. Например, устанавливать заголовок страницы или добавлять пункты в навигационную цепочку.
- template.php — файл шаблона. В идеале не содержит никакой логики, только вывод данных из $arResult . Кешируется html-вывод, т.е. PHP код из этого файла выполнится один раз, затем будет возвращаться html до следующего обновления кеша.
- result_modifier.php — файл, который подключается до template.php и может менять $arResult . Кешируется так же, как и template.php .
- component_epilog.php — файл, который подключается после template.php . Никогда не кешируется.
Последние три файла относятся к шаблону, предпочтительно редактировать именно их. Файл component.php в стандартных компонентах изменять нельзя, т.к. есть шанс, что правки затрутся после обновления системы.
Общую схему работы компонента можно представить несколькими шагами:
- Проверка входных данных в component.php .
- Проверка на наличие валидного (активного) кеша файлов result_modifier.php и template.php . Если кеш валидный, то вывод html, воссоздание массива $arResult с ключами из вызова SetResultCacheKeys() и переход к пункту 5.
- В случае невалидного кеша производятся необходимые действия для получения данных, т.е. заполнение массива $arResult .
- Подключение файлов result_modifier.php и template.php , формирование + вывод html, а также сохранение в кеше вывода и части массива $arResult .
- Подключение файла component_epilog.php .
- Выполнение остального кода в component.php .
Что нужно помнить
Содержимое массива $arResult на разных этапах различается. В result_modifier.php и template.php попадает массив, содержащий все данные, которые получены на третьем шаге. В файле component_epilog.php и коде компонента, который выполняется после него, доступны данные массива $arResult с ключами, которые были указаны в функции SetResultCacheKeys() . Вызов ее происходит в component.php .
Например, нам нужно вывести заголовок страницы вида «[Название инфоблока] (кол-во элементов)»:
Пример файла component_epilog.php
Схема работы компонента с файлами result_modifier.php и component_epilog.php:
Этот файл подключается после исполнения шаблона. Аналогично файлам стилей, родительский компонент сохраняет в своем кеше список файлов эпилогов всех шаблонов дочерних компонентов (возможно вложенных), а при хите в кеш подключает эти файлы в том же порядке, как они исполнялись без кеширования. Точно так же при вызове дочерних компонентов в шаблоне нужно передавать значение $component .
В файле component_epilog.php доступны $arParams , $arResult , но эти значения берутся из кеша. Набор ключей массива $arResult , попадающих в кеш, определяется в component.php вызовом вида:
При разработке своих компонентов обязательно используйте такую конструкцию чтобы ограничить размер кеша только необходимыми данными.
Name already in use
bitrix-docs / manual / components.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Компоненты — это виджеты, объекты, которые на вход получают какие-либо данные и должны произвести какой-нибудь вывод. В Битрикс компоненты делятся на 2 вида:
- простые
- комплексные
Комплексные компоненты — это по сути простые роутеры, которые подключают разные файлы в зависимости от URL. Дополнительно можно нагрузить их логикой, чтобы хоть как то оправдать их существование.
НИКОГДА не используйте комплексные компоненты! Для маршрутизации страниц существует роутер (urlrewrite.php). Выделяйте конкретный функционал в конкретную страницу или сервис.
- .parameters.php
- .description.php
- class.php
- component.php (устарело)
- lang
- папка языковых файлов
- папки шаблонов
Файл содержит описание входных параметров компонента для визуального редактора. Подробнее.
Файл содержит название, описание компонента и его положение в дереве логического размещения для визуального редактора.
Файл содержит реализацию класса компонента. Подробнее.
Файл содержит реализацию логики компонента (по сути содержимое метода executeComponent). Использовать не стоит, т.к. процедурный стиль днище и он крайне не структурирован.
- Точка входа: CBitrixComponent::executeComponent , именно с данного метода начинается выполнение компонента.
- Если компонента подключает шаблон — шаг 3. Иначе — выход.
- Подключение файла шаблона result_modifier.php
- Подключение файла шаблона template.php
- Подключение файла шаблона component_epilog.php
При кешировании результатов компонента (метод CBitrixComponent::startResultCache ), шаги 3-4 не выполняются.
Каждый компонент имеет ряд стандартных параметров:
- CACHE_TIME — время кеширования (в секундах)
- CACHE_TYPE — тип кеша (A,Y,N)
При реализации шаблонов для компонентов, вся информация должна выводиться на подготовленных компонентом данных $arResult , параметры компонента $arParams должны использоваться только для настройки отображения (например, «формат даты и времени», «флаг отображения картинки», . ).
Исключением служат компоненты, которые не имеют подготовленных данных (отсутствует arResult ).
Это могут быть компоненты, которые только отображают информацию определенным образом.
В шаблоне компонента, желательно использовать методологию БЭМ, как минимум наименования классов.
Наименования класса главного блока (т.е. блока, который оборачивает в себя весь шаблон), должно напрямую формироваться из названия компонента и названия шаблона.
Например, для компонента vendor:item.view и шаблона product-cart , главный класс может быть вида vendor-item-view vendor-item-view_product-cart .Структура шаблонов компонентов
- .description.php
- .parameters.php
- result_modifier.php
- component_epilog.php
- style.css
- script.js
- lang
- папка языковых файлов
- остальные файлы шаблона
Файл содержит описание дополнительных параметров шаблона для визуального редактора.
Файл содержит название, описание шаблона для визуального редактора.
Файл содержит логику пред-обработки данных шаблона (кешируется). В данном файлу нужно реализовывать всю обработку данных, чтобы в template.php просто обращаться к элементам массива.
Файл содержит логику пост-обработки данных шаблона (не кешируется). В данном файле нужно размещать все манипуляции с состоянием (например, вызовы APPLICATION, подключение сторонних стилей/скриптов, . ). Желательно НЕ использовать в данном файле переменные $arResult , $arParams и др. контекстные переменные, доступные в файлах template.php и result_modifier.php (см. далее про дочерние компоненты).
Файл содержит CSS стили шаблона.
Файл содержит JS скрипты шаблона.
Также в папке шаблона, допустимо размещать и другие файлы, необходимые для самого шаблона. Однако лучше размешать их в отдельной папке assets.Любой компонент, может вызывать любые компоненты (даже вкладываться в самого себя), сколько угодно раз. Для того чтобы корректно отрабатывало кеширование компонентов, при внутреннем вызове компонента, нужно указывать текущий компонент. В файле любого шаблона template.php доступна переменная $component , которую нужно указать при вызове дочернего компонента:
При кешировании родительского компонента, все файлы component_epilog.php дочерних компонентов будут вызываться в порядке вызова БЕЗ кеширования. Однако, переменные $arResult , $arParams , $component , $this будут указывать на переменные родительского компонента! Так как запретить кеширование родительского компонента из дочернего не представляется возможным (и технически, и с точки зрения логики), то использовать контекстные переменные не стоит.
Ебаный пиздец, все что можно сказать. Сложно, криво и непонятно. Не стоит использовать. Если нужная какая-либо логика обработки, или ленивая загрузку компонента — все это должно осуществлятся по средствам вызова отдельного сервиса, который в свою очередь уже может подключать нужный компонент.
Список рекомендаций, который очень желательно соблюдать при работе с компонентами. Данный список основывается на принципах ООП и на собственном опыте:
Component epilog php битрикс где находится
Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.
Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .
Евгений Смолин: Сам кувыркался с непонятками (пока курсы учебные не прочитал и руками не попробовал то, что там написано). Битрикс из тех систем, где изучение "методом тыка" не очень эффективно без предварительного изучения учебных курсов. Уважаемые новички, потратьте немного своего драгоценного времени, пройдите пару-тройку учебных курсов и масса вопросов просто испарится — там есть ответы на множество вопросов.
Курс для разработчиков — продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.
Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:
- Интерфейс программы — в главе Элементы управления курса Контент-менеджер.
- Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
- Информационные блоки — в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
- Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
- Работа с инструментами системы — в главе Работа с инструментами курса Администратор. Базовый.
- Модуль Поиск — в главе Поиск курса Администратор. Базовый.
- Вся информация по администрированию модулей размещена в курсах:
-
— модули "1С-Битрикс: Управление сайтом" — модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. — модули "1С-Битрикс: Корпоративный портал".
Как построен курс
Общепринятая градация квалификации разработчиков в рамках курса обозначает что:
- Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
- Middle разработчик может работать с API Bitrix Framework.
- Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
Примечание: Такое построение удобно для пошагового изучения принципов работы Bitrix Framework. По этому же принципу построены и тесты. Но такая структура не очень удобна для использования содержания курса как постоянного источника информации. Что бы переключить курс в режим Справочника, воспользуйтесь переключателем в правом углу
«шапки» курса.
Начальные требования к подготовке
Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):
- основами PHP, баз данных;
- основами HTML, CSS.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, добавляем новые уроки. Поэтому итоговое количество баллов курса и количество набранных вами баллов могут различаться между собой. Набранные вами баллы, в отличие от суммы баллов курса, не пересчитываются. Не переживайте!
Отличный результат — это если общее число набранных вами баллов отличается от максимального на несколько процентов.Тесты
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Также Вы можете поделиться ссылкой на страницу со своими сертификатами. Для этого на странице Моё обучение отметьте опцию Разрешить публичный доступ к резюме студента
и скопируйте ссылку на страницу резюме
. Страница с Вашим резюме будет доступна всем, кому Вы отправите ссылку на неё.
Комментарии к статьям
На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:
Что дальше?
Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:
Для преподавания офлайн
Если данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 6 дней (48 академических часов).
Если нет интернета
Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBooxiPhone:
FBReader
CoolReader
iBook
BookmateWindows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google ChromeiOS
Marvin for iOS
ShortBookLinux:
Calibre
FBReader
Cool Reader
Okular обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла — от 06.03.2023.