Как создать и вызвать компонент 1С-Битрикс
Базовая структура компонента в /local/components, назначение файлов и рабочий пример вызова через $APPLICATION->IncludeComponent().
Системные требования
Нужны тестовая копия проекта, доступ разработчика или администратора и резервная копия перед изменением рабочего кода.
Смотреть системные требования1. Выберите пространство имён
Собственные компоненты размещайте в /local/components/vendor/component.name/. Первая папка — уникальное пространство имён проекта, вторая — имя компонента.
/local/components/webcat/user.card/Название вызова получится webcat:user.card. Не используйте пространство bitrix: оно предназначено для системных компонентов.
Простой пример создания компонента
Официальный урок с размещением, файлами и вызовом IncludeComponent.
2. Создайте структуру компонента
Минимальный компонент содержит описание, параметры, класс и шаблон:
.description.php
.parameters.php
class.php
templates/.default/template.php
lang/ru/.description.php регистрирует компонент в визуальном редакторе, .parameters.php описывает форму настроек, class.php готовит данные, а шаблон отвечает только за вывод.
Совет
Не копируйте системный компонент в /bitrix/components/bitrix и не меняйте его файлы: обновление платформы может перезаписать изменения.
3. Опишите параметры
В .parameters.php объявите только параметры, которые редактор действительно может менять: ID сущности, лимит, шаблон отображения и параметры кеша.
$arComponentParameters = [
"PARAMETERS" => [
"USER_ID" => ["PARENT" => "BASE", "TYPE" => "STRING"],
"CACHE_TIME" => ["DEFAULT" => 3600],
],
];Все входные значения повторно нормализуйте в onPrepareComponentParams().
4. Реализуйте class.php и шаблон
Класс компонента наследуется от CBitrixComponent. В executeComponent() подключите модуль, получите данные и вызовите шаблон.
public function executeComponent()
{
if ($this->startResultCache()) {
$this->arResult = $this->loadData();
$this->includeComponentTemplate();
}
return $this->arResult;
}Не выполняйте запросы к базе в template.php.
5. Вызовите компонент на странице
На странице компонент подключается методом $APPLICATION->IncludeComponent():
$APPLICATION->IncludeComponent(
"webcat:user.card",
"",
["USER_ID" => 7, "CACHE_TYPE" => "A", "CACHE_TIME" => 3600]
);После размещения проверьте работу без авторизации, права пользователя, пустой результат и сброс кеша после изменения данных.
Была ли эта статья полезной?
Спасибо за ваш отзыв!