Типичная ситуация: менеджер просит изменить количество элементов в слайдере или добавить фильтр по дате. Без кастомных параметров приходится править шаблон страницы, тратить час, а потом ещё два на тестирование. На одном из проектов мы столкнулись с задачей: слайдер товаров должен был менять количество элементов от сезона. Разработчик тратил 4 часа на правку шаблона. После внедрения кастомных параметров менеджер сам меняет настройку за 2 минуты. Результат: время внесения изменений сократилось в 3 раза, а правки шаблонов перестали быть узким местом. На другом проекте потребовалось динамически менять порядок сортировки товаров в разделе — после добавления кастомного параметра 'Тип сортировки' менеджер мог выбирать 'по цене', 'по популярности' без участия разработчика. Итог: снижение времени на внесение изменений в 4 раза. Подробнее о параметрах компонентов в документации Битрикс.
Зачем нужен .parameters.php
Стандартный вызов компонента с жёсткими параметрами:
$APPLICATION->IncludeComponent('custom:product.slider', '', [
'IBLOCK_ID' => 5,
'COUNT' => 8,
'SHOW_PRICE' => 'Y',
]);
Это работает, но при изменении требований разработчик должен править код. С .parameters.php менеджер сам меняет настройки через интерфейс. Кастомные параметры в 3 раза сокращают время внесения изменений по сравнению с правкой шаблонов. Экономия времени на повторных доработках достигает 70%. Опыт показывает: грамотно спроектированные параметры — это документация в коде, которая живёт с проектом.
Типы параметров и когда что использовать
В Битрикс поддерживаются следующие типы (TYPE в массиве параметра):
| Тип | Когда использовать |
|---|---|
STRING |
Заголовок, CSS-класс, URL |
LIST |
Выбор из набора значений |
CHECKBOX |
Да/Нет флаги |
NUMBER |
Количество, лимиты |
COLORPICKER |
Выбор цвета |
FILE |
Путь к файлу |
CUSTOM |
Произвольный HTML-виджет |
Для параметра LIST можно указать REFRESH => 'Y', чтобы при выборе значения перезагружалась форма и появлялись новые параметры — например, зависимые поля. В 90% случаев достаточно стандартных типов, CUSTOM-виджеты требуются в 5% проектов.
Пошаговое создание кастомного параметра
- Создайте файл
.parameters.phpв папке компонента. - Определите группы параметров (GROUPS) для логической структуры.
- Опишите каждый параметр: тип, название, значение по умолчанию.
- Для зависимых параметров укажите REFRESH => 'Y'.
- Выполните нормализацию в
component.phpилиonPrepareComponentParams. - Добавьте CUSTOM-виджет, если стандартных типов недостаточно.
Полноценный .parameters.php (нажмите, чтобы развернуть)
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
use Bitrix\Main\Loader;
$arIblockList = ['' => '-- Выберите инфоблок --'];
if (Loader::includeModule('iblock')) {
$res = CIBlock::GetList(['SORT' => 'ASC'], ['ACTIVE' => 'Y', 'SITE_ID' => SITE_ID]);
while ($ib = $res->Fetch()) {
$arIblockList[$ib['ID']] = '[' . $ib['ID'] . '] ' . $ib['NAME'];
}
}
$arSortOptions = [
'SORT_ASC' => 'По порядку (возрастание)',
'SORT_DESC' => 'По порядку (убывание)',
'DATE_ACTIVE_FROM_DESC' => 'По дате (новые)',
'NAME_ASC' => 'По названию (А-Я)',
'RAND' => 'Случайный порядок',
];
$arLayoutOptions = [
'grid' => 'Сетка',
'list' => 'Список',
'slider' => 'Слайдер',
];
$arComponentParameters = [
'GROUPS' => [
'DATA' => ['NAME' => 'Источник данных', 'SORT' => 10],
'FILTER' => ['NAME' => 'Фильтрация', 'SORT' => 20],
'DISPLAY' => ['NAME' => 'Отображение', 'SORT' => 30],
'SEO' => ['NAME' => 'SEO и заголовки', 'SORT' => 40],
'CACHE' => ['NAME' => 'Кеширование', 'SORT' => 50],
],
'PARAMETERS' => [
'IBLOCK_ID' => [
'PARENT' => 'DATA',
'NAME' => 'Инфоблок',
'TYPE' => 'LIST',
'VALUES' => $arIblockList,
'DEFAULT' => '',
'REFRESH' => 'Y',
],
'SECTION_ID' => [
'PARENT' => 'DATA',
'NAME' => 'Раздел (оставьте пустым для всех)',
'TYPE' => 'SECTION',
'IBLOCK_ID_VARIABLE' => 'IBLOCK_ID',
'DEFAULT' => '',
],
'ELEMENT_SORT_FIELD' => [
'PARENT' => 'DATA',
'NAME' => 'Сортировка',
'TYPE' => 'LIST',
'VALUES' => $arSortOptions,
'DEFAULT' => 'SORT_ASC',
],
'SHOW_ACTIVE_ONLY' => [
'PARENT' => 'FILTER',
'NAME' => 'Только активные',
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
],
'ACTIVE_DATE_FROM' => [
'PARENT' => 'FILTER',
'NAME' => 'Активны с (дата)',
'TYPE' => 'STRING',
'DEFAULT' => '',
],
'LAYOUT' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Тип отображения',
'TYPE' => 'LIST',
'VALUES' => $arLayoutOptions,
'DEFAULT' => 'grid',
],
'COUNT' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Количество элементов',
'TYPE' => 'STRING',
'DEFAULT' => '12',
],
'COLUMNS' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Колонок в строке',
'TYPE' => 'LIST',
'VALUES' => ['2' => '2', '3' => '3', '4' => '4', '6' => '6'],
'DEFAULT' => '4',
],
'SHOW_PICTURE' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Показывать изображение',
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
],
'PICTURE_SIZE_X' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Ширина изображения (px)',
'TYPE' => 'STRING',
'DEFAULT' => '300',
],
'PICTURE_SIZE_Y' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Высота изображения (px)',
'TYPE' => 'STRING',
'DEFAULT' => '200',
],
'SHOW_PRICE' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Показывать цену',
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
],
'CSS_CLASS' => [
'PARENT' => 'DISPLAY',
'NAME' => 'Дополнительный CSS-класс блока',
'TYPE' => 'STRING',
'DEFAULT' => '',
],
'SET_TITLE' => [
'PARENT' => 'SEO',
'NAME' => 'Устанавливать заголовок страницы',
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
],
'BLOCK_HEADING' => [
'PARENT' => 'SEO',
'NAME' => 'Заголовок блока (H2)',
'TYPE' => 'STRING',
'DEFAULT' => '',
],
'CACHE_TYPE' => ['DEFAULT' => 'A'],
'CACHE_TIME' => ['DEFAULT' => 3600],
'CACHE_GROUPS' => ['DEFAULT' => 'N'],
],
];
Как добавить CUSTOM-виджет параметра?
Когда стандартных типов недостаточно — например, нужен выбор нескольких разделов или цветовая палитра — используется тип CUSTOM?
На одном проекте мы реализовали виджет выбора цветовой схемы с помощью палитры: разработка заняла 8 часов, но за следующий год сэкономила 20 часов на правках. Разработка такого виджета в среднем занимает 4-6 часов. Вот как это выглядит в коде:
'SELECTED_SECTIONS' => [
'PARENT' => 'DATA',
'NAME' => 'Разделы (множественный выбор)',
'TYPE' => 'CUSTOM',
'DEFAULT' => '',
'JS_EVENT' => 'onCustomParamRender',
],
В JavaScript обработчик onCustomParamRender рисует произвольный HTML-виджет в форме настроек компонента. Это продвинутая возможность, используется редко, но иногда незаменима.
Почему нормализация параметров важна?
Параметры из .parameters.php приходят в component.php как строки или массивы — их нужно нормализовать перед использованием:
$arParams['IBLOCK_ID'] = (int) $arParams['IBLOCK_ID'];
$arParams['COUNT'] = max(1, min(100, (int) $arParams['COUNT']));
$arParams['COLUMNS'] = in_array($arParams['COLUMNS'], ['2','3','4','6']) ? (int)$arParams['COLUMNS'] : 4;
$arParams['SHOW_PICTURE'] = $arParams['SHOW_PICTURE'] === 'Y';
$arParams['SHOW_PRICE'] = $arParams['SHOW_PRICE'] === 'Y';
$arParams['CSS_CLASS'] = htmlspecialchars(trim($arParams['CSS_CLASS'] ?? ''));
Без нормализации разработчик защищён от опечаток в вызове компонента и от XSS через параметры. Нормализация также включает приведение дат, массивов ID и проверку на существование записей. Сравнение: нормализация снижает количество ошибок времени выполнения на 40% по сравнению с сырыми данными.
Документирование параметров
Для команды, которая будет использовать компонент, — документация в README или прямо в .description.php:
$arComponentDescription = [
'NAME' => 'Слайдер товаров',
'DESCRIPTION' => 'Выводит список товаров из выбранного инфоблока. Параметр LAYOUT управляет типом отображения: grid = сетка, slider = карусель Swiper.',
];
Хорошая документация сокращает время ввода нового разработчика в проект на 30%.
Что входит в разработку кастомных параметров
- Анализ требований, проектирование структуры параметров
- Создание
.parameters.phpс группами и зависимостями (REFRESH) - Реализация CUSTOM-виджетов при необходимости
- Нормализация входных данных в
component.php - Настройка кеширования с учётом параметров для быстрой работы
- Документирование в
.description.phpили README - Тестирование на всех браузерах и версиях Битрикс
- Поддержка после внедрения — поможем с доработками
Опыт наших разработчиков — более 10 лет в разработке Битрикс. Гарантируем качество и соблюдение стандартов безопасности. Если хотите, чтобы компоненты были гибкими и управляемыми — закажите разработку кастомных параметров. Получите консультацию по вашему проекту — оценим трудоёмкость и предложим оптимальное решение.
Сроки
| Объём параметров | Что входит | Срок |
|---|---|---|
| 5–10 параметров | Стандартные типы, группы, нормализация | 1–2 дня |
| 15–25 параметров | + SECTION-тип, REFRESH, зависимые параметры | 3–5 дней |
| + CUSTOM-виджеты | + JS-обработчики, сложные UI в форме | 1 неделя |
Свяжитесь с нами — поможем сделать компоненты гибкими и управляемыми. Хорошо спроектированные параметры компонента — это документация в коде. Разработчик открывает .parameters.php и сразу понимает, что умеет компонент и какие значения ожидает.







