В этой статье разберем популярные вопросы с пользовательскими полями у разделов инфоблока:
Для начала необходимо создать пользовательское поле (свойство) у раздела
1) В административной панели Битрикс заходим в необходимый инфоблока(запоминаем его ID)
2) ищем раздел(запоминаем его ID),
3) заходим в редактирование данного раздела и во вкладке «Доп. поля» нажимаем «Добавить пользовательское свойство»
4) выбираем тип данных(например строка), прописываем код поля, вводиться можно только большие латинские буквы, например UF_ELEMCOUNT (запоминаем значение)
Выводим пользовательское поле у раздела по ID
$arFilter = Array('IBLOCK_ID'=>2,'ID'=>16, 'GLOBAL_ACTIVE'=>'Y'); $db_list = CIBlockSection::GetList(Array("timestamp_x"=>"DESC"), $arFilter, false, Array("UF_ELEMCOUNT")); if($uf_value = $db_list->GetNext()): $value=$uf_value["UF_ELEMCOUNT"]; echo $value; endif;
Пояснения:
Вместо 2 подставляем ID вашего инфоблока, где находится необходимый раздел
Вместо 16 подставляем ID самого раздела
Вместо UF_ELEMCOUNT подставляем Код поля (которой создали в 4ом пункте)
Записываем новое значение в пользовательское поле раздела
$bs = new CIBlockSection; $arFields = Array( "UF_ELEMCOUNT" => 23 ); $bs->Update(16, $arFields);
Пояснения:
Вместо UF_ELEMCOUNT подставляем Код поля
Вместо 16 подставляем ID раздела
Перебираем все разделы инфоблока и выводим пользовательское поле
$IBLOCK_ID = 2; $arFilter = Array( 'IBLOCK_ID'=>$IBLOCK_ID, 'GLOBAL_ACTIVE'=>'Y'); $obSection = CIBlockSection::GetTreeList($arFilter); while($arResult = $obSection->GetNext()){ for($i=0;$i<=($arResult['DEPTH_LEVEL']-2);$i++) echo ""; $arFilter = Array('IBLOCK_ID'=>$IBLOCK_ID,'ID'=>$arResult['ID'], 'GLOBAL_ACTIVE'=>'Y'); $db_list = CIBlockSection::GetList(Array("timestamp_x"=>"DESC"), $arFilter, false, Array("UF_ELEMCOUNT")); if($uf_value = $db_list->GetNext()): $value=$uf_value["UF_ELEMCOUNT"]; endif; echo "Значение свойства раздела = ".$value.'<br>'; }
Пояснения:
Вместо UF_ELEMCOUNT подставляем Код поля
Вместо 2 подставляем ID инфоблока