Назад

Битрикс – как добавить дополнительные параметры в компоненты и шаблоны

Главная
Блог
Битрикс – как добавить дополнительные параметры в компоненты и шаблоны

В Битрикс добавление новых параметров в компоненты и шаблоны – это разные процессы. Рассмотрим оба варианта с примерами кода.

1. Добавление параметров в компонент Битрикс

Параметры компонента хранятся в файле .parameters.php в корневой папке компонента. Если файла нет – создайте его.

Пример кода для выбора инфоблока

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

if (!CModule::IncludeModule("iblock")) return;

// Получение типов инфоблоков
$arTypesEx = CIBlockParameters::GetIBlockTypes(["-" => " "]);

// Получение списка инфоблоков
$db_iblock = CIBlock::GetList(
    ["SORT" => "ASC"],
    [
        "SITE_ID" => $_REQUEST["site"],
        "TYPE" => ($arCurrentValues["IBLOCK_TYPE"] != "-" ? $arCurrentValues["IBLOCK_TYPE"] : "")
    ]
);

// Получение свойств инфоблока
$rsProp = CIBlockProperty::GetList(
    ["sort" => "asc", "name" => "asc"],
    [
        "ACTIVE" => "Y",
        "IBLOCK_ID" => (isset($arCurrentValues["IBLOCK_ID"]) ? $arCurrentValues["IBLOCK_ID"] : $arCurrentValues["ID"])
    ]
);

// Настройки сортировки
$arSorts = ["ASC" => GetMessage("T_IBLOCK_DESC_ASC"), "DESC" => GetMessage("T_IBLOCK_DESC_DESC")];
$arSortFields = [
    "ID" => GetMessage("T_IBLOCK_DESC_FID"),
    "NAME" => GetMessage("T_IBLOCK_DESC_FNAME"),
    "ACTIVE_FROM" => GetMessage("T_IBLOCK_DESC_FACT"),
    "SORT" => GetMessage("T_IBLOCK_DESC_FSORT"),
    "TIMESTAMP_X" => GetMessage("T_IBLOCK_DESC_FTSAMP")
];

// Формирование списка инфоблоков и свойств
$arIBlocks = [];
$arProperty_LNS = [];

while ($arRes = $db_iblock->Fetch()) {
    $arIBlocks[$arRes["ID"]] = "[" . $arRes["ID"] . "] " . $arRes["NAME"];
}

while ($arr = $rsProp->Fetch()) {
    $arProperty[$arr["CODE"]] = "[" . $arr["CODE"] . "] " . $arr["NAME"];
    if (in_array($arr["PROPERTY_TYPE"], ["L", "N", "S"])) {
        $arProperty_LNS[$arr["CODE"]] = "[" . $arr["CODE"] . "] " . $arr["NAME"];
    }
}

// Настройка параметров компонента
$arComponentParameters = [
    "PARAMETERS" => [
        "IBLOCK_TYPE" => [
            "PARENT" => "BASE",
            "NAME" => GetMessage("IBLOCK_TYPE"),
            "TYPE" => "LIST",
            "VALUES" => $arTypesEx,
            "DEFAULT" => "news",
            "REFRESH" => "Y",
        ],
        "IBLOCK_ID" => [
            "PARENT" => "BASE",
            "NAME" => GetMessage("IBLOCK_IBLOCK"),
            "TYPE" => "LIST",
            "VALUES" => $arIBlocks,
            "DEFAULT" => '={$_REQUEST["ID"]}',
            "ADDITIONAL_VALUES" => "Y",
            "REFRESH" => "Y",
        ],
        "FILE" => [
            "PARENT" => "BASE",
            "NAME" => GetMessage("FILE_PATH"),
            "TYPE" => "STRING",
            "DEFAULT" => '/upload/file.csv',
        ],
    ]
];

Ключевые моменты:

  • REFRESH => "Y" обновляет параметры при изменении типа инфоблока.

  • Параметры компонента задаются в массиве $arComponentParameters.

Вызов компонента с параметрами

$APPLICATION->IncludeComponent(
    "rdy:file.import",
    ".default",
    [
        "COMPONENT_TEMPLATE" => ".default",
        "IBLOCK_TYPE" => "catalog",
        "IBLOCK_ID" => "16",
        "FILE" => '/upload/file.csv'
    ],
    false,
    ["HIDE_ICONS" => "N"]
);

2. Добавление параметров в шаблон компонента

Параметры шаблона задаются в файле component.php или template.php через массив $arTemplateParameters.

Пример: выбор типа баннера

$IBLOCK_ID = 10; // Лучше заменить на динамический параметр
$arTypes = [];

$res = CIBlockElement::GetList(
    ["NAME" => "ASC"],
    ["IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y"],
    false,
    false,
    ['ID', 'NAME', 'CODE']
);

while ($arItem = $res->GetNext()) {
    $arTypes[$arItem["CODE"]] = $arItem["NAME"];
}

$arTemplateParameters = [
    "BANNER_TYPE_THEME" => [
        "NAME" => "Выберите тип баннера",
        "TYPE" => "LIST",
        "VALUES" => $arTypes
    ],
];

Рекомендации:

  • Замените хардкод $IBLOCK_ID на динамический параметр.

  • Выносите текстовые значения в языковые файлы (/lang/ru/template.php).

Вызов компонента с параметром шаблона

$APPLICATION->IncludeComponent(
    "aspro:com.banners.mshop",
    "top_slider_banners",
    [
        "BANNER_TYPE_THEME" => "CON_SLIDERS",
        // другие параметры...
    ]
);

Вывод

  • Параметры компонента настраиваются в .parameters.php ($arComponentParameters).

  • Параметры шаблона задаются в $arTemplateParameters.

  • Используйте REFRESH => "Y" для динамического обновления параметров.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи