tryhardy / component.params
bitrix module for extending components params
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:bitrix-module
Requires
- php: >=8.1
- ext-json: *
- composer/installers: ~1
Requires (Dev)
This package is auto-updated.
Last update: 2025-06-12 10:20:07 UTC
README
- Описание
- Пример использования
- Вывод <input type="text">
- Вывод <select>
- Вывод <textarea>
- Вывод диалогового окна с выбором элемента инфоблока (по ID)
- Вывод диалогового окна с выбором выбора раздела инфоблока
- Вывод <input type="checkbox">
- Вывод диалогового окна с выбором файла
- Вывод вложенных групп полей
Описание
Простой модуль для настройки параметров компонентов без необходимости хранить значения параметров в отдельной таблице в БД.
Значительно экономит время на написании и отладке миграций.
Состав полей можно конфигурировать практически в любых комбинациях.
Полезно, если на проекте много плашек с фактоидами и табами, которые нет смысла хранить в БД.
Пример использования
Вывод <input type="text">
<?php //в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { //Заводим пустую коллекцию полей (в нее будем добавлять селекты, инпуты, радиобаттоны и т.д.) $сollection = new Fields\FieldsCollection(); //Простое тектовое поле: <input type="text" name="theme"> $simpleInputField = (new Fields\Field(name: 'name'))->setLabel('Some random label'); //Добавляем это поле в коллекцию $сollection->add($simpleInputField); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "INPUTS_BLOCK", name: "Ссылки:", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); } ?>
-23-06-2024.09_26_08.mp4
Вывод <select>
<?php //в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { //Заводим пустую коллекцию полей (в нее будем добавлять селекты, инпуты, радиобаттоны и т.д.) $сollection = new Fields\FieldsCollection(); //Создаем пустой <select name="{name}"></select> $selectField = (new Fields\SelectField(name: 'theme'))->setLabel('Тема'); // Создаем коллекцию объектов <option> (пока что пустую) $selectOptionsCollection = new Fields\SelectOptionCollection(); //Создаем тег <option value="blue">Синяя тема</option> $option1 = new Fields\SelectOption(text: "Синяя тема", value: "blue", selected: false); //Добавляем option1 в коллекцию объектов option $selectOptionsCollection->add($option1); //Создаем тег <option value="green">Зеленая тема</option> $option2 = new Fields\SelectOption(text: "Зеленая тема", value: "green", selected: false); //Добавляем option2 в коллекцию объектов option $selectOptionsCollection->add($option2); //Добавляем коллекцию объектов <option> внутрь объекта <select> $selectField->setCollection($selectOptionsCollection); //Добавляем получившийся <select> в коллекцию полей $сollection->add($selectField); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "SELECTS_BLOCK", name: "Селекты:", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); } ?>
-23-06-2024.09_31_28.mp4
Вывод <textarea>
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { $сollection = new Fields\FieldsCollection(); //<textarea name="description"></textarea> $textareaField = (new Fields\TextareaField(name: "description"))->setLabel("Описание"); //Добавляем получившийся <textarea> в коллекцию полей $сollection->add($textareaField); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "DESCRIPTION_BLOCK", name: "Заголовок с описанием:", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); }
-23-06-2024.11_48_46.mp4
Вывод диалогового окна с выбором элемента инфоблока (по ID)
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { $сollection = new Fields\FieldsCollection(); $field = (new Fields\IblockField(iblockId: 10, name: "element"))->setLabel("Элемент инфоблока"); $сollection->add($field); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "ELEMENTS_IBLOCK", name: "Элементы инфоблока", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); }
Вывод диалогового окна с выбором выбора раздела инфоблока (по ID)
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { $сollection = new Fields\FieldsCollection(); $field = (new Fields\IblockField(iblockId: 10, name: "section"))->setLabel("Раздел инфоблока")->setIsSection(); $сollection->add($field); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "SECTIONS_IBLOCK", name: "Разделы инфоблока", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); }
Вывод <input type="checkbox">
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { $сollection = new Fields\FieldsCollection(); $field = (new Fields\CheckboxField(name: "agreement")) ->setLabel("Подпись для чекбокса") ->setChecked(); //Устанавливаем, если нужно, чтобы чекбокс был по умолчанию выбран $сollection->add($field); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "CHECKBOX_BLOCK", name: "Множественный блок с чекбоксами", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); }
video_3.mp4
Вывод диалогового окна с выбором файла
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { $сollection = new Fields\FieldsCollection(); $field1 = (new Fields\FileField(name: "image_desc"))->setLabel("Изображение для таба (Desc)"); $field2 = (new Fields\FileField(name: "image_tab"))->setLabel("Изображение для таба (Tab)"); $field3 = (new Fields\FileField(name: "image_mob"))->setLabel("Изображение для таба (Mob)"); $сollection->add($field1); $сollection->add($field2); $сollection->add($field3); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "IMAGES_BLOCK", name: "Множественный блок с изображениями", parent: "ADDITIONAL_PARAMETERS", multiple: "Y", refresh: "N" ); }
-23-06-2024.09_50_21.mp4
Вывод вложенных групп полей
//в файле .parameters.php шаблона компонента use \Component\Params\Fields; /** * @global CMain $APPLICATION * @var array $arParams * @var array $arCurrentValues * @var array $arResult */ if (\Bitrix\Main\Loader::includeModule('component.params')) { //Создаем пустую коллекцию полей $сollection = new FieldsCollection(); //Добавляем в нее <input type="text" name="name" placeholder="Заголовок"> $сollection->add((new Field('name', 'Заголовок'))->setLabel('Заголовок')); //Добавляем в нее <textarea name="descr" placeholder="Описание"> $сollection->add((new TextareaField('descr', 'Описание'))->setLabel('Описание')); //Создаем множественную пустую группу полей, которая будет вложена внутрь коллекции $сollection $groupField = (new GroupFields('groupFields', 'Группа полей'))->setMultiple(); //Настраиваем коллекцию полей, которые будут вложены в экземпляр $groupField $GroupFieldsCollection = new FieldsCollection(); $GroupFieldsCollection->add((new Field('href', 'Href'))->setLabel('Href')); $GroupFieldsCollection->add((new Field('text', 'Название ссылки'))->setLabel('Описание')); $GroupFieldsCollection->add((new IblockField((int)$arCurrentValues['IBLOCK_ID'], 'iblock'))->setLabel('Инфоблок')); $groupField->setFields($GroupFieldsCollection); //Добавляем группу полей в коллекцию $сollection->add($groupField); //Добавляем получившуюся коллекцию полей в параметры компонента \Component\Params\Helpers\ComponentParams::setCustomParams( $arTemplateParameters, $arCurrentValues, fieldsCollection: $сollection, code: "GROUP_FIELDS", name: "Кастомный блок", parent: "ADDITIONAL_SETTINGS", multiple: "Y", refresh: "N" ); }