Серия 11: Как работают компоненты, модификация работы штатных компонентов

В этой серии расскажу как работают компоненты 1С-Битрикс "под капотом" как вносить модификации в работу штатных компонентов не вмешиваясь в их работу и не лишаясь обновлений 1С-Битрикс.

Из документации к 1С-Битрикс
Компонент: это логически завершённый код, предназначенный для извлечения информации из инфоблоков и других источников и преобразования её в HTML-код для отображения в виде фрагментов web-страниц. Состоит из собственно компонента (контроллер) и шаблона (представление). Компонент, с помощью API одного или нескольких модулей, манипулирует данными. Шаблон компонента выводит данные на страницу.

Файл component_epilog.php - инструмент для модификации данных работы компонента с включенным кешированием. Создается разработчиком самостоятельно.

Файл result_modifier.php - инструмент для модификации данных работы компонента произвольным образом. Создается разработчиком самостоятельно. Работает при выключенном кешировании.

Передать в component_epilog.php данные которые не передаются компонентом по умолчанию:

$cp = $this->__component; // объект компонента
if (is_object($cp)) {
    // в arResult component_epilog передадим все отображаемые свойства
    $cp->SetResultCacheKeys(array(
            'DISPLAY_PROPERTIES'
        )
    );
}

Чеклист:

  • Как работают компоненты.
  • Что такое component_epilog.php и result_modifier.php.
  • Добавление своей логики в работу компонента.
Полная версия серии на Boosty: Смотреть
Гость июля 11, 2024 4:14 pm
Михаил, подскажите пожалуйста, бывают ли такие ситуации в которых все равно придется снимать компонент с поддержки или вносить изменения в ядро битрикса?  
Михаил Базаров июля 12, 2024 10:28 am
Когда иначе совсем ни как, а функционал нужен.
Снятие компонента, туда сюда, бывает оправданным.

А вот модификации ядра реально - если иначе вообще ни как не решить задачу. За все время работы у меня такой ситуации не было ни разу.

Блог-note: заметки разработчика

Подключение мобильной версии шаблона Битрикс сайта, с автопереключением

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

Увеличение диска на готовой виртуальной машине Битрикс

Как всем известно, на официальном сайте 1С-битрикс можно скачать готовую виртуальную машину максимально сконфигурированн...

Глобальные фильтры на всякие случаи жизни

Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива, инфорблока. Спектр применяем...

Вывести все товары, с постраничной навигацией, из всех разделов инфоблока

По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е товаров вывести все товары вс...

Адаптивное гамбургер меню для битрикс

Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В архиве готовый шаблон для Битри...

Следующая/предыдущая новость/статья при просмотре подробной в Битрикс

Странное дело, в Битрикс по умолчанию, отсутсвует функционал для навигации внутри новостей или статей типа: "Следующая/...

Вывести информацию, только на первом уровне раздела каталога, в 1С-Битрикс

Задача: на сайте, в каталоге, выводится два фильтра - боковой и верхний. Оба компонента подключены в файле section.php к...

Вывести производителей на сайте с отбором его товаров из каталога

Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а т...

Создание мобильного приложения на cordova, для любого сайта.

Если стоит задача разработки мобильного приложения для сайта, можете воспользоваться данной заметкой. Постарался сделать...