Эксплуатация модуля Highloadblock

Эксплуатация модуля Highloadblock

809
25.05.2014

Есть свойство инфоблока типа "Справочник" с названием "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С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку