@itemashabanov

Выборка свойств элемента инфоблока по маске Bitrix?

Здравствуйте. Есть инфоблок, и в нем есть свойства типа UF_404_DESIGN. Так вот, при выводе элементов этого инфоблока, помимо свойств NAME, ID и прочее, нужно выводить свойства по маске, т.е. UF_404_*. Это свойство может быть пустым, но оно должно выводиться. Делаю так, маска не срабатывает. Подскажите, пожалуйста, как правильно сделать?
$arSelect = Array("ID", "IBLOCK_ID", "DETAIL_TEXT", "PROPERTY_UF_404_*");
$arFilter = Array("IBLOCK_ID" => $arParams["REVIEW_IBLOCK_ID"], "CODE" => !empty($arParams["USE_SKU"]) ? $arBaseProduct["ID"] : $arResult["ID"]);
$res      = CIBlockElement::GetList(Array("SORT" => "ASC", "CREATED_DATE"), $arFilter, false, false, $arSelect);
  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
@PetrPo
$iblockId = $arParams["REVIEW_IBLOCK_ID"];
$properties = $elements = [];

$iterator = \Bitrix\Iblock\PropertyTable::getList([
	'select' => ['CODE'],
	'filter' => ['IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y'],
]);
while($row = $iterator->fetch()) {
	$propertyCode = $row['CODE'];
	
	if(strpos($propertyCode, 'UF_404_') !== false) {
		$properties[] = 'PROPERTY_'.$propertyCode;
	}
}

$arSelect = Array("ID", "IBLOCK_ID", "DETAIL_TEXT");
$arSelect = array_merge($arSelect, $properties);
$arFilter = Array("IBLOCK_ID" => $iblockId, "CODE" => !empty($arParams["USE_SKU"]) ? $arBaseProduct["ID"] : $arResult["ID"]);
$res      = CIBlockElement::GetList(Array("SORT" => "ASC", "CREATED_DATE"), $arFilter, false, false, $arSelect);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы