🧱 Суть
Параметры компонента – это настройки, которые передаются в компонент через метод IncludeComponent().
Они позволяют изменять поведение компонента без изменения его кода.
Например, через параметры можно настроить:
- количество элементов;
- сортировку;
- ID инфоблока;
- кеширование;
- шаблон отображения;
- дополнительные режимы работы.
📦 Проблема
Если жёстко прописывать настройки внутри компонента:
$newsCount = 10;
$iblockId = 5;то компонент становится сложно переиспользовать.
Для каждого нового сценария придётся изменять его код.
✅ Решение
Передавать настройки через параметры. Тогда один и тот же компонент можно использовать на разных страницах с разными настройками.
💻 Код
Передача параметров
Параметры передаются третьим аргументом метода:
<?php
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"IBLOCK_ID" => 5,
"NEWS_COUNT" => 10,
]
);
?>Массив параметров автоматически становится доступен внутри компонента.
Массив $arParams
Все параметры находятся в массиве:
$arParamsНапример:
$count = $arParams["NEWS_COUNT"];или:
$iblockId = $arParams["IBLOCK_ID"];Именно через $arParams компонент получает свои настройки.
Пример со списком новостей
<?php
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"IBLOCK_ID" => 5,
"NEWS_COUNT" => 5,
"SORT_BY1" => "ACTIVE_FROM",
"SORT_ORDER1" => "DESC",
]
);
?>В результате компонент:
- возьмёт данные из инфоблока №5;
- покажет 5 элементов;
- отсортирует их по дате.
Один компонент – разные настройки
На разных страницах можно использовать один и тот же компонент:
Страница новостей:
[
"IBLOCK_ID" => 5,
"NEWS_COUNT" => 10,
]Главная страница:
[
"IBLOCK_ID" => 5,
"NEWS_COUNT" => 3,
]Код компонента останется одинаковым.
Часто используемые параметры
Для инфоблоков часто встречаются:
[
"IBLOCK_TYPE" => "content",
"IBLOCK_ID" => 5,
]Для количества элементов:
[
"NEWS_COUNT" => 10,
]Для сортировки:
[
"SORT_BY1" => "ACTIVE_FROM",
"SORT_ORDER1" => "DESC",
]Параметры кеширования
Практически все стандартные компоненты поддерживают кеширование.
Например:
[
"CACHE_TYPE" => "A",
"CACHE_TIME" => 3600,
]Где:
A– автоматическое кеширование;3600– время жизни кеша в секундах.
Параметры шаблона
Шаблон выбирается вторым аргументом:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"cards",
[]
);Но некоторые настройки шаблона также могут передаваться через параметры:
[
"SHOW_DATE" => "Y",
"SHOW_PREVIEW_TEXT" => "N",
]После этого шаблон сможет использовать эти значения через $arParams.
Собственные параметры
При разработке собственного компонента можно создавать любые параметры.
Например:
[
"SHOW_AUTHOR" => "Y",
"MAX_ITEMS" => 20,
]Внутри компонента:
if ($arParams["SHOW_AUTHOR"] === "Y") {
// вывод автора
}Описание параметров
Для отображения параметров в административной панели используется файл:
.parameters.phpПример:
$arComponentParameters = [
"PARAMETERS" => [
"MAX_ITEMS" => [
"NAME" => "Количество элементов",
"TYPE" => "STRING",
"DEFAULT" => 10,
],
],
];После этого настройка появится в визуальном редакторе компонента.
Частые ошибки
Не проверять наличие параметра
Плохо:
$count = $arParams["NEWS_COUNT"];Лучше:
$count = $arParams["NEWS_COUNT"] ?? 10;Стоит предусматривать значения по умолчанию.
Жёстко прописывать настройки
Плохо:
$limit = 10;Лучше:
$limit = $arParams["NEWS_COUNT"];Передавать параметры неверного типа
Плохо:
[
"NEWS_COUNT" => true
]Лучше:
[
"NEWS_COUNT" => 10
]Использовать магические значения
Плохо:
if ($arParams["MODE"] === "1")Лучше:
if ($arParams["MODE"] === "DETAIL")Код становится понятнее.
Хранить бизнес-логику в параметрах
Параметры должны описывать настройки компонента, а не содержать сложную логику приложения.
🎯 Вывод
- Параметры позволяют настраивать компонент без изменения его кода
- Передаются третьим аргументом
IncludeComponent() - Внутри компонента доступны через массив
$arParams - Один компонент можно использовать на разных страницах с разными настройками
- Собственные параметры описываются в файле
.parameters.php - Грамотное использование параметров делает компоненты гибкими и переиспользуемыми
🔗 Связано
- Битрикс. Компоненты Bitrix: что это и как работают
- Битрикс. Вызов компонентов через IncludeComponent()
- Битрикс. Шаблоны компонентов
- Битрикс. Кеширование компонентов
- Битрикс. Инфоблоки
- Битрикс. Архитектура 1С-Битрикс и структура проекта
- PHP. Массивы: работа, перебор и полезные функции
- PHP. Переменные, константы и область видимости