Кастомизация компонентов
Кастомизация стандартного компонента - копирование стандартного компонента в собственное пространство имён и изменение логики его работы с целью изменения/добавления функционала.
Большинство задач в Bitrix Framework реализуется через компоненты, и в шаблоне компонента вы оперируете массивами $arResult - это результат работы компонента (данные) и $arParams - это входные параметры.
Чтобы кастомизировать стандартный компонент необходимо:
- Создать новое пространство имен компонентов в папке
/local/components/, например создать директорию/local/components/my_components/.
Чтобы кастомизированный компонент подключился автоматически вместо стандартного, необходимо разместить его в директории /local/components/bitrix/.
- В созданную папку необходимо скопировать папку с компонентом, который хотите изменить (копировать из папки /bitrix/components/bitrix/).
- Изменить компонент под текущие задачи.
- Изменить описание компонента на свое в файлах .description.php и /lang/ru/.description.php. Если файлов .description.php нет, вы можете создать их. Они не обязательны и могут отсутствовать у стандартных компонентов.
- Исправить файлы .parameters.php и component.php, модифицировав (добавив необходимый) функционал с помощью API продукта;
- Отредактировать шаблон компонента под текущие задачи.
- Очистите кеш
визуального редактора. В результате в визуальном редакторе отобразится кастомизированный компонент.
Важно! У работы с копией компонента есть определенные недостатки, которые нужно учитывать: - Увеличивается общее количество компонентов, соответственно растет и количество выделяемых на их поддержку ресурсов. - Сложность в освоении новым разработчиком: сначала ему нужно будет найти, в чем отличие кастомизированного компонента от уже существующего стандартного.
Важно! Выполняя кастомизацию компонента помните, что все ключи в $MESS, содержащие название, описание и параметры компонента, а также идентификаторы веток компонента в дереве компонентов визуального редактора должны быть уникальными в рамках всего продукта.