Получение пользовательских UF_ свойств в Битрикс для разделов
По мере работы приходится сталкиваться с огромным количеством CMS на которых работают сайты и многие вопросы не тривиальные приходится решать иногда заглядывая в официальную документацию.
Так случилось и в этот раз. Стояла вроде тривиальная задача: добавить пользовательское свойство к разделу и на основании его вывести в краткой карточке товара набор свойств. Система управления 1С Битрикс.
С первой частью проблем вообще не возникло. Свойство спокойно добавляется через панель Битрикса и спокойно там редактируется. Переходим к выводу.
Официальная документация нам предлагает использовать CIBlockSection::GetList. Предлагают значит надо. Пишем примерно следующий код:
$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => "20"), false, $arSelect = array("UF_*"));
И получаем... Ничего... В смысле пусто... Хотя офф документация утверждает обратное.
Пришлось проявить смекалку под названием Google, который странице на 10 сдался и выдал мысль, что для доступа к пользовательским полям раздела необходимо использовать методы работы с пользовательскими полями, но никак не методы работы с разделами (привет ООП от разработчиков Битрикс). В результате мы получили примерно такой год.
$arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_25_SECTION",$arResult['ID'],"UF_VISPARAMS");
if($arUF['UF_VISPARAMS']['VALUE'] != ""){
$_visFields = explode(',', $arUF['UF_VISPARAMS']['VALUE']);
$visFields = [];
foreach($_visFields as $k => $v){
if(trim($v) != ""){
$visFields[] = trim($v);
}
}
};
Называет он чешем ухо левой пяткой. Почему для работы с пользовательскими свойствами разделов надо использовать такой странный подход — загадка, как и сам Битрикс, к которому есть куча нареканий по внутренней структуре.
PS: Битрикс хороший, дорогой, ужасно медленный и дико неудобный для разработки и поддержки продукт. Но отлично раскрученный. Поэтому если у вас возникло желание сделать на нём сайт или интернет магазин — одумайтесь, разделите бюджет на 3, посмотрите по сторонам, выберите другую, более быструю и управляемую платформу, а на 2/3 бюджета слетайте на месяц на Мальдивы. Там хорошо! ))