Есть свойство инфоблока типа "Справочник" с названием "COLOR".
Компонент catalog.detail получает данное свойство, но ... не получает изображение ... Пришлось мудрить и вот такой код на скорую руку вышел
Есть свойство инфоблока типа "Справочник" с названием "COLOR".
Компонент catalog.detail получает данное свойство, но ... не получает изображение ... Пришлось мудрить и вот такой код на скорую руку вышел.
$arOneSKU = $arResult['DISPLAY_PROPERTIES']['COLOR']; $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList( array("filter" => array( 'TABLE_NAME' => $arOneSKU['USER_TYPE_SETTINGS']['TABLE_NAME'] )) )->fetch(); if (isset($hlblock['ID'])){ $arValues = array(); $arXmlMap = array(); $boolName = true; $boolPict = true; $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); $entity_data_class = $entity->getDataClass(); $rsPropEnums = $entity_data_class::getList(array('filter'=>array('UF_XML_ID'=>$arResult['DISPLAY_PROPERTIES']['COLOR']['VALUE']))); while ($arEnum = $rsPropEnums->fetch()) { if (!isset($arEnum['UF_NAME'])) { $boolName = false; break; } $arEnum['PREVIEW_PICTURE'] = false; if (!isset($arEnum['UF_FILE'])) $boolPict = false; if ($boolPict) $arEnum['PREVIEW_PICTURE'] = CFile::GetFileArray($arEnum['UF_FILE']); $arEnum['ID'] = intval($arEnum['ID']); $arValues[$arEnum['ID']] = array( 'ID' => $arEnum['ID'], 'NAME' => $arEnum['UF_NAME'], 'SORT' => intval($arEnum['UF_SORT']), 'XML_ID' => $arEnum['UF_XML_ID'], 'PICT' => ($boolPict ? array( 'SRC' => $arEnum['PREVIEW_PICTURE']['SRC'], 'WIDTH' => intval($arEnum['PREVIEW_PICTURE']['WIDTH']), 'HEIGHT' => intval($arEnum['PREVIEW_PICTURE']['HEIGHT']) ) : false ) ); $arXmlMap[$arEnum['UF_XML_ID']] = $arEnum['ID']; } $arValues[0] = array( 'ID' => 0, 'SORT' => PHP_INT_MAX, 'NA' => true, 'NAME' => ($boolPict ? '' : '-'), 'XML_ID' => '', 'PICT' => ($boolPict ? $arEmptyPreview : false) ); if ($boolName!==false){ $arOneSKU['VALUES'] = $arValues; $arOneSKU['VALUES_COUNT'] = count($arValues); $arOneSKU['PROPERTY_TYPE'] = ($boolPict ? 'E' : 'L'); $arOneSKU['XML_MAP'] = $arXmlMap; $arResult['DISPLAY_PROPERTIES']['COLOR'] = $arOneSKU; } }
К сожалению, на поиск одной мелочи - фильтрации по конкретным ID.
'filter'=>array('UF_XML_ID'=>$arResult['DISPLAY_PROPERTIES']['COLOR']['VALUE'])
потратил кучу времени:( Так что делюсь со всеми.
UPDATE 2014-05-29.
Данную ошибку в компоненте исправили разработчики
Источник: http://dev.1c-bitrix.ru/community/webdev/user/60622/blog/10611/
Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.
P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом