Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Вывод картинки из свойства элемента инфоблока

00 голосов
4
Здравствуйте!

Имеется инфоблок, одним из свойств его элементов является свойство "Фото" тип "Привялка к элементам", множественная.

То есть к элементу этого инфоблока я хотел бы привязать несколько элементов из инфоблока "Фото".

Проблема возникла на этапе вывода привязанных фоток в шаблоне компонента.

Смотрю в массив значений элемента моего инфоблока (показываю часть):
Код
[EXTERNAL_ID] => 502
                    [~EXTERNAL_ID] => 502
                    [IBLOCK_TYPE_ID] => catalog
                    [~IBLOCK_TYPE_ID] => catalog
                    [IBLOCK_CODE] => 
                    [~IBLOCK_CODE] => 
                    [IBLOCK_EXTERNAL_ID] => 
                    [~IBLOCK_EXTERNAL_ID] => 
                    [PROPERTIES] => Array
                        (
                            [FOTO] => Array
                                (
                                    [ID] => 8
                                    [TIMESTAMP_X] => 2010-03-17 12:39:26
                                    [IBLOCK_ID] => 6
                                    [NAME] => Фото
                                    [ACTIVE] => Y
                                    [SORT] => 500
                                    [CODE] => FOTO
                                    [DEFAULT_VALUE] => 
                                    [PROPERTY_TYPE] => E
                                    [ROW_COUNT] => 1
                                    [COL_COUNT] => 30
                                    [LIST_TYPE] => L
                                    [MULTIPLE] => Y
                                    [XML_ID] => 
                                    [FILE_TYPE] => 
                                    [MULTIPLE_CNT] => 10
                                    [TMP_ID] => 
                                    [LINK_IBLOCK_ID] => 7
                                    [WITH_DESCRIPTION] => 
                                    [SEARCHABLE] => N
                                    [FILTRABLE] => N
                                    [IS_REQUIRED] => Y
                                 &n
спросил 18 Апр, 13 от doctor2 (180 баллов)

4 Ответы

00 голосов
Можно использовать API, например CIBlockElement::GetList().
Также в некоторых стандартных компонентах есть настройки для вывода связанных элементов.
ответил 18 Апр, 13 от smileplz (8,020 баллов)
00 голосов
Получилось выцепить кое что вот так:

Код
$res = CIBlockElement::GetByID($arElement["PROPERTIES"]["FOTO"]["VALUE"][0]);
$ar_res = $res->GetNext();

$rsFile = CFile::GetByID($ar_res["DETAIL_PICTURE"]);
$arFile = $rsFile->Fetch();


В результате вот что:

Код
Array
(
    [ID] => 277
    [TIMESTAMP_X] => 13.03.2010 14:30:44
    [MODULE_ID] => iblock
    [HEIGHT] => 296
    [WIDTH] => 120
    [FILE_SIZE] => 6117
    [CONTENT_TYPE] => image/jpeg
    [SUBDIR] => iblock/d16
    [FILE_NAME] => big-terminal.jpg
    [ORIGINAL_NAME] => big-terminal.jpg
    [DESCRIPTION] => 
)



Теперь не понятно как получить работающую ссылку на картинку?
ответил 18 Апр, 13 от doctor2 (180 баллов)
00 голосов
Зачем такой геморрой?
Как только получили ID картинок, для каждой вызывайте CFile::GetFileArray(ID картинки) Получите в ответ массив с набором полей, среди которых
Код
SRC - полный путь к картинке от корня сайта
WIDTH - ширина
HEIGHT - высота


Извиняюсь, плохо вчитался в условия. Тогда так:
Код
$arFilter = array('IBLOCK_ID' => ID инфоблока с картинками,'ID' => array(здесь все ID привязанных элементов));
$rsItems = CIBlockElement::GetList(array(),$arFilter);
while ($arItem = $rsItems->GetNext())
{
$arItem['DETAIL_PICTURE'] = CFile::GetFileArray($arItem['DETAIL_PICTURE']);
}

ответил 15 Июнь, 13 от Pomnep (13,960 баллов)
00 голосов
Можно просто использовать CFile::ShowImage($ID-картинки) - т.е. ID файла в вашем случае - создаст HTML для отображения картинки
ответил 18 Сен, 13 от FireLuna (580 баллов)

Похожие вопросы

0 голосов
0 ответов
спросил 09 Окт, 13 от TeneFox (140 баллов)
0 голосов
1 ответ
0 голосов
8 ответов
0 голосов
1 ответ