Добрый день, друзья. Нужна ваша помощь в решении задачи. Задача такова. Получить url всех изображений с каждого инфоблока. Проблем в получении DETAIL_PHOTO и PREVIEW_PHOTO нет. Но каждом товаре есть множественное св-во MORE_PHOTO и вот оттуда не получается получить url. Заранее благодарен за любую помощь.
Андрей Головизнин, вижу, что никто не хочет отвечать на вопрос, а он достаточно интересный по своей сути. Сразу скажу - готового кода тут нет, скорее советы и размышления.
Во-первый, способ который сейчас существует - CFile::GetPath - можете посмотреть как он устроен и в цикле (например foreach) перебирать его значения. В таком случае в самом худшем варианте вы породите N запросов к БД (N - число id файлов в параметре MORE_PHOTO), а в лучшем - зайдете N раз в кеш
Во-вторых, можно сделать быстрый костыльный способ - если сложить upload path (по дефолту - /upload/ ), к нему добавить из БД: SUBDIR, а потом "/", а потом FILE_NAME, то вы можете получить все пути за 1 запрос к БД, но это стоит делать лишь когда вы 100% уверены, что работаете с инфоблоками, что вы НЕ используете облачные хранилища, что файлы у вас именно загружены в инфоблок и что вы сознательно игнорируете событие OnGetFileSRC. Подробнее про получение можно посмотреть тут: http://bxapi.ru/src/?module_id=main&name=CFile::GetFileSRC
Для 2 варианта - если попробуете использовать ORM, дополните его Runtime-полем - "LINK" как результат SQL-комманды CONCAT_WS (погуглите), то можете даже использовать ванильное кеширование - что позволит в лучшем случае даже не делать этого запроса и быстро оперировать сразу путем к файлу
Андрей, спасибо за ответ и за рекомендации. Обязательно все посмотрю, погуглю. Задача же решилась при помощи CIBlockElement::GetProperty(iblock_id, element_id, "sort", "asc", array("CODE"=>"MORE_PHOTO"));