- Установить модуль mpm.options из маркетплейса bitrix.
- Создать файл настроек модуля (options.php или подобный)
- Подключить модуль и вызвать генератор, передав нужные параметры
Bitrix\Main\Loader::includeModule('mpm.options'); Gelion\BitrixOptions\Form::generate('youmodule.id', $options);
- Установить пакет
ge1i0n/bitrix-options
composer require ge1i0n/bitrix-options
- Создать файл настроек модуля (options.php или подобный)
- Подключить вызвать генератор, передав нужные параметры
Gelion\BitrixOptions\Form::generate('youmodule.id', $options);
- Скопировать пакет к себе в модуль
- Зарегистрировать классы модуля в файле
include.php
, прописав корректные пути к классам.Bitrix\Main\Loader::registerAutoLoadClasses('youmodule.id', [ 'Gelion\\BitrixOptions\\Form' => '/lib/Form.php', 'Gelion\\BitrixOptions\\TypeInterface' => '/lib/TypeInterface.php', 'Gelion\\BitrixOptions\\TypeBase' => '/lib/TypeBase.php', 'Gelion\\BitrixOptions\\TypeForm' => '/lib/TypeForm.php', 'Gelion\\BitrixOptions\\Types\\Alert' => '/lib/Types/Alert.php', 'Gelion\\BitrixOptions\\Types\\Checkbox' => '/lib/Types/Checkbox.php', 'Gelion\\BitrixOptions\\Types\\Colorpicker' => '/lib/Types/Colorpicker.php', 'Gelion\\BitrixOptions\\Types\\Conditions' => '/lib/Types/Conditions.php', 'Gelion\\BitrixOptions\\Types\\Dropdown' => '/lib/Types/Dropdown.php', 'Gelion\\BitrixOptions\\Types\\HtmlEditor' => '/lib/Types/HtmlEditor.php', 'Gelion\\BitrixOptions\\Types\\MultiSelect' => '/lib/Types/MultiSelect.php', 'Gelion\\BitrixOptions\\Types\\Number' => '/lib/Types/Number.php', 'Gelion\\BitrixOptions\\Types\\Text' => '/lib/Types/Text.php', 'Gelion\\BitrixOptions\\Types\\Textarea' => '/lib/Types/Textarea.php', ]);
В генератор передаётся массив табов, групп и опций на странице настроек.
$options = [
[
'DIV' => 'settings',
'TAB' => 'Новая вкладка',
'TITLE' => 'Новая вкладка',
'ICON' => '',
'GROUPS' => [
'GROUP_CODE' => [
'TITLE' => 'Название группы',
'OPTIONS' => []
],
],
],
];
В OPTIONS
внутри группы передаётся массив опций, где в качестве ключа указан ID опции в базе данных.
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'STRING',
'FIELDS' => [
'TITLE' => 'Поле "Строка"',
'DEFAULT' => 'Значение по умолчанию',
'NOTES' => 'Это подсказка к полю "Строка"',
'PLACEHOLDER' => 'Это плейсхолдер к полю "Строка"',
'TAG' => 'Текст на теге',
'READONLY' => false,
'DISABLED' => false,
'AUTOCOMPLETE' => false,
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'NUMBER',
'FIELDS' => [
'TITLE' => 'Поле "Число"',
'DEFAULT' => 42,
'NOTES' => 'Это подсказка к полю "Число"',
'PLACEHOLDER' => 'Это плейсхолдер к полю "Число"',
'TAG' => 'Текст на теге',
'READONLY' => false,
'DISABLED' => false,
'AUTOCOMPLETE' => false,
'STEP' => 1,
'MIN' => 0,
'MAX' => 100,
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'TEXTAREA',
'FIELDS' => [
'TITLE' => 'Поле "Текст"',
'DEFAULT' => 'Значение по умолчанию',
'NOTES' => 'Это подсказка к полю "Текст"',
'PLACEHOLDER' => 'Это плейсхолдер к полю "Текст"',
'TAG' => 'Текст на теге',
'READONLY' => false,
'DISABLED' => false,
'AUTOCOMPLETE' => false,
'COLS' => 5,
'ROWS' => 10,
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'CHECKBOX',
'FIELDS' => [
'TITLE' => 'Поле "Чекбокс"',
'DEFAULT' => 'Y',
'NOTES' => 'Это подсказка к полю "Чекбокс"',
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'COLORPICKER',
'FIELDS' => [
'TITLE' => 'Поле "Выбор цвета"',
'NOTES' => 'Это подсказка к полю "Выбор цвета"',
'DEFAULT' => '#FFFFFF',
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'DROPDOWN',
'FIELDS' => [
'TITLE' => 'Поле "Список"',
'DEFAULT' => 'val-2',
'NOTES' => 'Это подсказка к полю "Список"',
'TAG' => 'Текст на теге',
'OPTIONS' => [
[
'TITLE' => 'Первое свойство',
'VALUE' => 'val-1',
],
[
'TITLE' => 'Второе свойство',
'VALUE' => 'val-2',
],
],
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'MULTISELECT',
'FIELDS' => [
'TITLE' => 'Поле "множественный список"',
'DEFAULT' => serialize(['val-1','val-2']),
'NOTES' => 'Это подсказка к полю "множественный список"',
'TAG' => 'Текст на теге',
'OPTIONS' => [
[
'TITLE' => 'Первое свойство',
'VALUE' => 'val-1',
],
[
'TITLE' => 'Второе свойство',
'VALUE' => 'val-2',
],
],
],
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'HTMLEDITOR',
'FIELDS' => [
'TITLE' => 'Поле "HTML-редактор"',
'NOTES' => 'Это подсказка к полю "HTML-редактор"',
],
'PARAMS' => [
'WIDTH' => '100%',
'HEIGHT' => '500',
'PHP' => false,
'TASKBAR' => false,
]
],
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'CONDITIONS',
'FIELDS' => [
'TITLE' => 'Поле "Условия"',
'NOTES' => 'Это подсказка к полю "Условия"',
],
],
Эта опция ничего не сохраняет в базу данных, но позволяет выводить информационные сообщения на странице настроек. Опция имеет свои собственные параметры о которых можно прочесть ниже.
'PROP_ID' => [
'SORT' => 100,
'TYPE' => 'ALERT',
'FIELDS' => [
'TITLE' => 'Поле "Сообщения"',
],
],
Для опций категории "Формы" можно передать дополнительные параметры, влияющие на отображение формы на странице. Более подробно о принимаемых параметрах и их значениях можно узнать в документации Bitrix Дополнительно доступные параметры пропасаны в базовом классе.
'PROP_ID' => [
'FIELDS' => [],
'PARAMS' => [
'DISPLAY' => 'block',
'WIDTH' => 'wd',
'HEIGHT' => 'md',
'COLOR' => 'default',
'TAGCOLOR' => 'default',
'MODIFICATOR' => false,
],
],
Параметры по умолчанию для опции "Сообщения". О доступных параметрах значениях можно узнать в документации Bitrix.
'PROP_ID' => [
'FIELDS' => [],
'PARAMS' => [
'DISPLAY' => false,
'HEIGHT' => false,
'COLOR' => 'default',
'ICON' => false,
],
],
Чтобы создать свой тип опции нужно создать свой класс, унаследовавшись от класса TypeBase
и с интерфейсом TypeInterface
.
Затем, где-нибудь перед вызовом генератора зарегистрировать сопоставление названий типов, и классов, которые должны быть инициализированы.
Gelion\BitrixOptions\Form::typesRegister([
'CUSTOM_TYPE' => MyCustomOptionType::class,
]);
Зарегистрированные типы опций, при совпадении названий будут перебивать стандартные.