Файл result modifier php

Файл result modifier php

Выполнить код перед подключением шаблона компонента

Выполнить код перед подключением шаблона компонента можно через файл result_modifier.php , который находится в текущей папке шаблона компонента.

Данный файл часто используют для переопределения данных, которые передаются в шаблон. Данные параметры находятся в массиве $arResult .

Например, если на странице выводится картинка, то в файле «result_modifier.php» можно переопределить вывод картинки, сделав из неё миниатюру.

Также можно добавлять другие параметры, которые можно использовать в шаблоне.

В данном файле также доступен массив $arParams , в которых содержатся параметры, которые были переданы при подключении компонента.

Выполнить код после подключения шаблона компонента

Выполнить код после подключения шаблона компонента можно через файл component_epilog.php .

В данном файле также доступы массивы $arResult и $arParams , но их значения берутся из кеша.

К сожалению (а быть может к счастью) в эпилог компонента падает не весь массив с параметрами. Ниже вы узнаете как добавить в массив переменные, без дополнительных запросов

Как добавить данные из $arResult в component_epilog.php

Без долгих вступлений, начнем. Вам понадобится любой компонент, и 2 файла относящиеся к этому компоненту result_modifier.php и component_epilog.php . Если их еще нет, создайте. В самом конце резалт модифаера пишем следующий код:

Что мы делаем? Записываем из массива $arResult, который уже содержит все необходимые свойства со значениями, свои уникальные для эпилога.

Теперь, они доступны как в самом template.php так и в эпилоге:

Мне пригодилось это при использовании SetPageProperty, который потом используется в header.php . Что делать с футером сайта (footer.php вашего шаблона) вы уже знаете по этой статье.

Если бы не эта возможность, пришлось бы по $arResult[‘ID’] вытаскивать всю необходимую информацию, которые мы и так уже получили.

Читайте также:  Hg8245 пароль по умолчанию

На этом всё. Всем удачи и терпения 🙂 .

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
— Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
— Разработка функционала с нуля и доработка кода на уже созданных проектах;
— Поддержка рабочего сайта, доработки по ТЗ;
— Адаптивная вёрстка макетов и натяжка на Битрикс;
— Парсинг сайтов;
— Выгрузка и Загрузка на сайт (форматы — CSV, XML, XLS, XLSX, JSON)
— Интеграции со сторонними сервисами по API;
— Многоязычные версии сайтов и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Популярные статьи:

2 комментария

Ну прям костыль какой-то. Если Вы сдавали экзамены по Битрикс или хотя бы готовились, то Вам должно быть известно о такой функции компонента как SetResultCacheKeys(), который принимает массив ключей, которые и будут «прокинуты» в некешируемые части компонента (конкретно в нашем случае — component_epilog.php )

Для «проброса» из файла компонента:
$this->SetResultCacheKeys([
‘TOTAL_FOR_EXAMPLE’,
]);

Для «проброса» из файла result_modifier:
$this->__component->SetResultCacheKeys([
‘TOTAL_FOR_EXAMPLE’
]);

Дополню ваш пример для полноты, перед вашим кодом необходимо добавить в массив значение
$arResult[‘TEST’] = ‘test_value’;
а затем Для «проброса» из файла result_modifier:
$this->__component->SetResultCacheKeys([
‘TEST’
]);

При использовании компонента в Битриксе часто нужно, чтобы компонент не только выводил данные на страницу, но и выполнял некоторые дополнительные действия: изменение заголовка страницы, добавление элементов навигационной цепочки и т. п. Раньше (при работе с версией Битрикса, младшей чем 9.0) для реализации такого поведения необходимо было модифицировать основной файл компонента component.php .

Читайте также:  Как узнать внешний ip своего компьютера

В версии 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 в стандартных компонентах изменять нельзя, т.к. есть шанс, что правки затрутся после обновления системы.

Общую схему работы компонента можно представить несколькими шагами:

  1. Проверка входных данных в component.php .
  2. Проверка на наличие валидного (активного) кеша файлов result_modifier.php и template.php . Если кеш валидный, то вывод html, воссоздание массива $arResult с ключами из вызова SetResultCacheKeys() и переход к пункту 5.
  3. В случае невалидного кеша производятся необходимые действия для получения данных, т.е. заполнение массива $arResult .
  4. Подключение файлов result_modifier.php и template.php , формирование + вывод html, а также сохранение в кеше вывода и части массива $arResult .
  5. Подключение файла component_epilog.php .
  6. Выполнение остального кода в component.php .
Читайте также:  Intel nuc original hades canyon boxnuc8i7hvk2

Что нужно помнить

Содержимое массива $arResult на разных этапах различается. В result_modifier.php и template.php попадает массив, содержащий все данные, которые получены на третьем шаге. В файле component_epilog.php и коде компонента, который выполняется после него, доступны данные массива $arResult с ключами, которые были указаны в функции SetResultCacheKeys() . Вызов ее происходит в component.php .

Например, нам нужно вывести заголовок страницы вида «[Название инфоблока] (кол-во элементов)»:

Ссылка на основную публикацию
Умные часы для детей xiaomi mi bunny
Детские смарт-часы Xiaomi, изготовленные из прочного пластика различных оттенков, предназначены для отображения текущего времени и дополнительной информации (например, о пройденной...
Телефон с камерой лучше чем у айфона
В России начинаются продажи смартфонов iPhone XS и iPhone XS Max. Цены в этот раз просто заоблачные — средняя (256...
Телефон с горизонтальной камерой
Сегодня мало кого можно удивить телефоном с двумя основными камерами. А вот сдвоенную фронтальную камеру встретишь далеко не в каждом...
Улучшить качество связи мтс
Усилитель сигнала МТС– специальный прибор, который необходим для того, чтобы предоставлять более сильный сигнал сотовой связи. Невозможно звонить или отправлять...
Adblock detector