Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Параметры компананта

00 голосов
5
В параметрах нужно задать ID инфоблока:
Код
$arComponentParameters = array(
   "GROUPS" => array(
      "GROUP_CAR_BRAND" => array(
         "NAME" => 'Марка автомобиля',
      ),
   ),
    
   "PARAMETERS" => array(        
           "IBLOCK_TYPE" => array(
         "PARENT" => "GROUP_CAR_BRAND",
         "NAME" => 'Тип инфоблока',
         "TYPE" => "LIST",
         "VALUES" => $arIBlockType,
         "REFRESH" => "Y",
      ),
      "IBLOCK_ID" => array(
         "PARENT" => "GROUP_CAR_BRAND",
         "NAME" => 'ID инфоблока',
         "TYPE" => "LIST",
         "VALUES" => $arIBlock,
         "REFRESH" => "N",
         "ADDITIONAL_VALUES" => "N",
      ),


Такой код работает. Проблема появляется когда нужно задать несколько ID инфоблоков.

Если переименовать параметры IBLOCK_TYPE и IBLOCK_ID, например XXX_IBLOCK_TYPE и XXX_IBLOCK_ID, то в форма редактирования компонента перестает работать. При выборе типа инфоблока перестают изменятся список инфоблоков.
спросил 04 Дек, 13 от Eoling (140 баллов)

5 Ответы

00 голосов
за обновление отвечает "REFRESH" => "Y"
ответил 04 Фев, 14 от Hax (1,100 баллов)
00 голосов
Цитата
Александр Кудин пишет:
за обновление отвечает "REFRESH" => "Y"


Изначально Y стояло, проблема в чем-то другом.
ответил 24 Май, 14 от Eoling (140 баллов)
00 голосов
Цитата
Илья Шаляпин пишет:
Такой код работает. Проблема появляется когда нужно задать несколько ID инфоблоков.

Если инфоблоки одного типа - добавьте для параметра IBLOCK_ID такой ключ:
Код
"MULTIPLE" => "Y"

Если разных - заводите несколько параметров.
ответил 20 Сен, 14 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
Если разных - заводите несколько параметров.


Дак в этом и вопрос, как это сделать?
ответил 25 Янв, 15 от Eoling (140 баллов)
00 голосов
Цитата
Илья Шаляпин пишет:
Дак в этом и вопрос, как это сделать?

Внимательно посмотрев на файл .parameters.php, который Вы взяли за образец, и выяснив, откуда берутся массивы $arIBlockType и $arIBlock. Если Вы, к примеру, заводите дополнительно IBLOCK_TYPE_1 и IBLOCK_ID_1 - для них нужны свои массивы со списком типов инфоблоков ($arIBlockType) и со списком инфоблоков одного типа ($arIBlock). Т.е. что-то типа:
Код
$arIBlockType1 = CIBlockParameters::GetIBlockTypes();
$arIBlock1=array();
$rsIBlock = CIBlock::GetList(Array("sort" => "asc"), Array("TYPE" => $arCurrentValues["IBLOCK_TYPE_1"], "ACTIVE"=>"Y"));
while($arr=$rsIBlock->Fetch())
{
   $arIBlock1[$arr["ID"]] = "[".$arr["ID"]."] ".$arr["NAME"];
}
ответил 09 Май, 15 от Pomnep (13,960 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 25 Апр, 14 от Mira666 (100 баллов)
0 голосов
2 ответов
спросил 18 Апр, 14 от Marcion (220 баллов)
0 голосов
4 ответов
спросил 22 Янв, 14 от Eolin (100 баллов)
0 голосов
1 ответ