Меню
Полная версия серии на Boosty: Перейти к серии

В этой серии расскажу как работают компоненты 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.
  • Добавление своей логики в работу компонента.
Гость июля 11, 2024 4:14 pm
Михаил, подскажите пожалуйста, бывают ли такие ситуации в которых все равно придется снимать компонент с поддержки или вносить изменения в ядро битрикса?  
Михаил Базаров июля 12, 2024 10:28 am
Когда иначе совсем ни как, а функционал нужен.
Снятие компонента, туда сюда, бывает оправданным.

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

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

Автоматический повтор заказа на D7 со списанием с внутреннего счета

На сайте товары и услуги доступны по подписке, пользователи пополняют внутренний счёт, после чего происходит автоматичес...

Если предложение SKU в корзине, поменять кнопку добавления на "В корзине"

Данная заметка является дополнением к ранее опубликованной: Если товар в корзине, поменять значение input на "В корзине"...

ORM: получение информации о разделах инфоблока на D7, использование Bitrix\Iblock\SectionTable и пользовательских полей

Задача: При работе с инфоблоками в Битрикс, часто возникает необходимость получать данные о разделах. Для этих целей мож...

Уникальная СЕО информация для каждого торгового предложения в каталоге 1С-Битрикс

Задача: реализовать уникальную мета-информацию для каждого SKU в каталоге. У каждого ТП должны быть свои: заголовок h1, ...

Как вывести свойства инфоблока по отдельности и немного плюшек не в тему

Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании новости, они выводятся все вместе...

Почтовое событие на создание нового элемента инфоблока, через API

Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблока простыми пользователям.Будет...

Прятать или показывать описание раздела каталога

В новых компонентах и шаблонах catalog.section есть не документированный и не выводимый параметр: "Скрывать описание раз...

Получить все товары из всех заказов пользователя. История купленных товаров.

Задача: нужно создать раздел, в персональном разделе пользователя, с историей всех купленных товаров. Не путать с истори...

Оптимизация jpeg и png картинок на cron, с помощью jpegoptim и optipng

Задача: на сайт каждый день проходит выгрузка из 1С с обновлением картинок. Нужно оптимизмровать эти картинки с помощью...