Назад

Как получить заполненные значения свойства «Тип список» в Битрикс

Главная
Блог
Как получить заполненные значения свойства «Тип список» в Битрикс

При работе с API Битрикс иногда возникают сложности с получением всех значений свойства типа «Список», особенно если оно множественное. В этой статье разберем, как правильно выводить данные, используя метод CIBlockElement::GetProperty.

Базовый пример получения значений свойства

Документация Битрикс предлагает следующий код:

$VALUES = array();
$res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, array("sort" => "asc"), array("CODE" => "COLORS"));
while ($ob = $res->GetNext()) {
    $VALUES[] = $ob['VALUE'];
}

Разберем параметры:

  1. $IBLOCK_ID – ID инфоблока.

  2. $ELEMENT_ID – ID элемента.

  3. array("sort" => "asc") – сортировка.

  4. array("CODE" => "COLORS") – фильтр по символьному коду свойства.

Дополнительные фильтры для выборки

Можно фильтровать не только по CODE, но и по другим параметрам:

  • NAME – название свойства (можно использовать % и _).

  • ID – ID свойства.

  • ACTIVE – активность (Y/N).

  • SEARCHABLE – участвует в поиске (Y/N).

  • PROPERTY_TYPE – тип свойства.

  • EMPTY – проверка на пустоту (Y/N).

Расширенный пример с обработкой изображений

Если свойство содержит привязку к элементам или файлам (например, цвета товара с картинками), можно использовать такой код:

$VALUES = array();
$res = CIBlockElement::GetProperty(1, $arResult['ID'], "sort", "asc", array("CODE" => "COLORS"));
$b = 0;

while ($ob = $res->GetNext()) {
    // Ищем элемент по описанию (например, название цвета)
    $my_elements = CIBlockElement::GetList(
        array("ID" => "ASC"),
        array("IBLOCK_ID" => 19, "NAME" => $ob['DESCRIPTION']),
        false,
        false,
        array('ID', 'PREVIEW_PICTURE')
    );
    
    if ($ar_fields = $my_elements->GetNext()) {
        $VALUES[$b]['BG'] = CFile::GetPath($ar_fields['PREVIEW_PICTURE']);
    }
    
    $VALUES[$b]['IMG'] = CFile::GetPath($ob['VALUE']);
    $VALUES[$b]['DESC'] = $ob['DESCRIPTION'];
    $b++;
}

Что происходит в коде:

  1. Получаем значения свойства COLORS для элемента.

  2. Для каждого значения ($ob) ищем связанный элемент по его описанию (DESCRIPTION).

  3. Если элемент найден, сохраняем его превью-изображение.

  4. Добавляем путь к изображению свойства и его описание в массив $VALUES.

Вывод

Используя CIBlockElement::GetProperty, можно гибко получать данные свойств типа «Список» в Битрикс. Для работы с файлами (например, картинками) применяйте CFile::GetPath.

Официальная документация: CIBlockElement::GetProperty

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