Получение вариантов из свойства типа «Список» в инфоблоке
Нередка такая подобная задача встает, когда требуется задать фильтр по какому-нибудь свойству, например, для компонента bitrix:news.list.
Для получения вариантов из свойства инфоблока типа «Список» можно воспользоваться следующей удобной функцией:
<?php
function get_enum_values_by_prop_code($code, $iblockId = false)
{
$filter = ['CODE' => $code];
//можно дополнительно передать ID инфоблока,
//если символьные коды повторяются в разных ИБ
if ($iblockId) {
$filter['IBLOCK_ID'] = $iblockId;
}
$propertyEnums = CIBlockPropertyEnum::GetList([], $filter);
$result = [];
while ($enumFields = $propertyEnums->GetNext()) {
$resultInfo = [
'ID' => $enumFields['ID'],
'VALUE' => $enumFields['VALUE'],
'XML_ID' => $enumFields['XML_ID'],
];
$result['BY_ID'][$enumFields['ID']] = $resultInfo;
$result['BY_XML_ID'][$enumFields['XML_ID']] = $resultInfo;
$result['BY_VALUE'][$enumFields['VALUE']] = $resultInfo;
}
return $result;
}
Функция принимает на вход символьный код свойства инфоблока. Дополнительно можно передавать ID инфоблока, когда символьные коды свойств повторяются в разных инфоблоках.
Возвращает функция массив из 3 элементов, внутри которых уже лежат все варианты значений поля: по ID, по XML_ID, по значению. Из данного массива вы можете с легкостью достать все необходимые данные, обратившись по соответствующим ключам.
[
"BY_ID" => [
48 => [
"ID" => "48",
"VALUE" => "Apple",
"XML_ID" => "apple",
],
49 => [
"ID" => "49",
"VALUE" => "Samsung",
"XML_ID" => "samsung",
],
50 => [
"ID" => "50",
"VALUE" => "Xiaomi",
"XML_ID" => "xiaomi",
],
],
"BY_XML_ID" => [
"apple" => [
"ID" => "48",
"VALUE" => "Apple",
"XML_ID" => "apple",
],
"samsung" => [
"ID" => "49",
"VALUE" => "Samsung",
"XML_ID" => "samsung",
],
"xiaomi" => [
"ID" => "50",
"VALUE" => "Xiaomi",
"XML_ID" => "xiaomi",
],
]
"BY_VALUE" => [
"Apple" => [
"ID" => "48",
"VALUE" => "Apple",
"XML_ID" => "apple",
],
"Samsung" => [
"ID" => "49",
"VALUE" => "Samsung",
"XML_ID" => "samsung",
],
"Xiaomi" => [
"ID" => "50",
"VALUE" => "Xiaomi",
"XML_ID" => "xiaomi",
],
],
]
Также можете посмотреть получение вариантов из пользовательского поля типа «Список» для Highload-блока.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий