Как создать пользовательский компонент в 1с-Битрикс
Если вы говорите об модификации компонента, то тогда через эрмитаж.
Если вы говорите об создании собственного компонента, то тогда вам нужно смотреть уроки от битрикса на эту тему.
Отслеживать
ответ дан 30 окт 2017 в 8:29
1,649 12 12 серебряных знаков 23 23 бронзовых знака
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.3.8.5973
Создание компонента
Папка «mycomponent» является пространством имён для Bitrix. Внутри данной папки создаются сами компоненты, которые можно будет вызвать примерно такими именами:
'mycomponent:blog', // local/components/mycomponent/blog/ 'mycomponent:calendar', // local/components/mycomponent/calendar/ 'mycomponent:date' // local/components/mycomponent/date/
Внутри каждой папки компонента должны быть три обязательных файла.
- mycomponent/blog/component.php или class.php (код компонента)
- mycomponent/blog/.description.php (описание компонента)
- mycomponent/blog/templates/.default/template.php (шаблон компонента)
Есть два способа создания компонента, через файл «component.php» или «class.php». Второй способ создаёт компонент через ООП.
Шаг 1: Подключение шаблона
В файле «component.php» или «class.php» надо добавить следующий код, который позволит загружать контент из файла «template.php».
# 1-ый способ (component.php) $this->IncludeComponentTemplate(); # 2-ой способ (class.php) class Custom extends CBitrixComponent < public function executeComponent() < $this->IncludeComponentTemplate(); > >
Также в методе IncludeComponentTemplate() можно указать другой шаблон.
# component.php $this->IncludeComponentTemplate('list'); // загрузится шаблон list.php
Чтобы передать переменные в шаблон компонента, надо в файле «component.php» или «class.php» создать массив $arResult .
// Создание переменной в компоненте $arResult['VAR'] = 'Переменная'; // component.php $this->arResult['VAR'] = 'Переменная'; // class.php # Использование в шаблоне (templates/.default/template.php) echo $arResult['VAR']; // Переменная
Шаг 2: Файл настроек
Файлы «template.php» и «.description.php» заполнять не обязательно, но можно указать настройки в файле «.description.php»:
# .description.php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();> $arComponentDescription = array( 'NAME' => 'Имя компонента', 'DESCRIPTION' => 'Описание компонента', );
Пример настройки компонента:

Шаг 3: Вывод компонента
Компонент создан. Его можно вызвать на странице редактирования шаблона через следующий код:
$APPLICATION->IncludeComponent( 'mycomponent:blog' );
На месте данного кода появится контент из файла «template.php»
Обновлено: 01 ноября 2020
Комментарии
Авторизуйтесь, чтобы добавлять комментарии
Практика Bitrix — Создание компонента
1. Cоздаем свое пространство имен, например: jet.
Для этого надо создать папку jet в папке components
- /local/components/jet — новый способ.
- /bitrix/components/jet — старый способ (не рекоммендуется).
2. Далее в созданном пространстве имен создаем папку с названием нашего компонента, например:date.current.
3. Теперь в папке компонента создаем создаем два обязательных файла и папку для хранения шаблонов templates. В этой папке должна быть создана папка .default и в ней файл template.php.
Получаем такую структуру в папке /local/components/jet/date.current:
- component.php
- .description.php
- templates/.default/template.php
Простой пример создания компонента
В качестве примера сделаем компонент, который выводит текущую дату и время. Причем формат вывода даты и времени задается выбором в свойствах. В реальных условиях такой компонент будет неинтересен. Но нам важно понять, как выполняется разработка компонента. В более сложных случаях все реализуется похожим образом.
Предварительные действия
Готовим php-код компонента
Первым делом сразу напишем php-код, который выполняет, то, что нам нужно.
Правда код просто выводит дату и нельзя выбрать другой формат. Лучше поместить в переменную формат вывода даты:
И последний штрих — нужно разделить логику и представление:
Создаем структуру папок и файлов компонента
Теперь нужно создать свое пространство имен, например: dv. Для этого надо создать папку /local/components/dv . В ней делаем папку компонента — date.current. И в ней, в свою очередь, создаем два обязательных файла и папку для хранения шаблонов templates. В этой папке должна быть создана папка .default и в ней файл template.php.
Получаем такую структуру в папке /local/components/dv/date.current :
- component.php
- .description.php
- templates/.default/template.php
Реализуем компонент без входных параметров
Пока сделаем компонент без возможности задания входного параметра — формата даты.
IncludeComponentTemplate(); ?>
GetMessage("Текущая дата"), "DESCRIPTION" => GetMessage("Выводим текущую дату"), ); ?>
Как вы могли заметить в каждом из файлов компонента в начале пишется строка if (!defined(“B_PROLOG_INCLUDED”) || B_PROLOG_INCLUDED!==true) die(); . Она нужна для того, чтобы данные файлы нельзя было вызвать напрямую из окна браузера.
В простейшем виде компонент готов — его можно вызвать в коде страниц при помощи конструкции:
IncludeComponent( "dv:date.current", ".default", Array( ), false );?>
Реализуем компонент с входными параметрами
Теперь давайте сделаем, чтобы компонент можно было добавлять на страницу из визуального редактора, и чтобы можно было задавать шаблон выдачи даты в настройках компонента.
Чтобы наш компонент появился в визуальном редакторе нужно дополнить файл описания компонента.
.description.php:
GetMessage("Текущая дата"), "DESCRIPTION" => GetMessage("Выводим текущую дату"), "PATH" => array( "ID" => "dv_components", "CHILD" => array( "ID" => "curdate", "NAME" => "Текущая дата" ) ), "ICON" => "/images/icon.gif", ); ?>
Для размещения компонента в дереве компонентов мы добавили элемент массива описания PATH. Таким образом, наш компонент будет показан в отдельной папке. Опционально, можно задать иконку компонента — она будет показываться в дереве и в визуальном редакторе.
Разберемся с настройками компонента. Будем считать, что опцию шаблон даты мы будем задавать строкой. Создаем файл .parameters.php с таким содержанием:
array(), "PARAMETERS" => array( "TEMPLATE_FOR_DATE" => array( "PARENT" => "BASE", "NAME" => "Шаблон для даты", "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => "Y-m-d", ), ), ); ?>
И изменяем файл с логикой компонента, чтобы он мог использовать параметр, который мы задаем component.php:
IncludeComponentTemplate(); ?>
Что же мы сделали?
Мы создали компонент, в самом простом виде. Мы не учитывали мультиязычность, не учитывали возможность создания помощи к компоненту и прелести кеширования компонентов.
Большая часть заказных компонентов для Bitrix Framework создается путем изменения компонентов, идущих в поставке продуктов. Поэтому очень нужно хорошо изучить стандартные компоненты, перед тем как программировать новые. Скорее всего, задачу, которую вы хотите решить — уже решили разработчики компании 1С-Битрикс.