Используем CFile::GetList и формируем путь к картинке за 1 запрос

Как можно сформировать пути к изображениям не используя CFile::GetPath?

Битрикс и CFile::GetList — формируем ссылку на картинку

На этот метод намекнул один из читателей данного блога, за что ему спасибо 🙂
Давайте для начала вспомним, как мы раньше формировали наши ссылки:

$src = CFile::GetPath($arElement["PREVIEW_PICTURE"]);

На выходе мы сразу получали ссылку вида:

/upload/iblock/d73/d73128ed720f4de60d6dcf0d6785204a.png

У такого подхода был единственный минус — в качестве параметра он принимает только 1 ID, и мы не можем массово сформировать url изображения. Что же нам предлагает метод битрикса CFile::GetList?

В качестве параметров, у него не только есть сортировка arOrder но и arFilter. Как это выглядит на практике:

$IBLOCK_ID = 59;
$res = CIBlockElement::GetList (
	Array("ID" => "ASC"),
	Array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y"),
	false,
	false,
	Array('ID', 'PREVIEW_PICTURE')
);
while ($arItem = $res->GetNext()) {
	$arResult['YANDEX_MAP'][] = $arItem['PREVIEW_PICTURE'];
}

$res = CFile::GetList(
	false,
	Array("@ID" => $arResult['YANDEX_MAP'])
);
while($res_arr = $res->GetNext()) {
	$src = '/upload/'.$res_arr["SUBDIR"]."/".$res_arr["FILE_NAME"];
	$arResult['YANDEX_MAP_IMAGES'][] = $src;
}

В нашем случае сортировку мы не применяем, и пишем false. А вот фильтр содержит массив из ID фото — «@ID» => $arResult[‘YANDEX_MAP’].
Из минусов, громоздкая запись на формирования пути:

'/upload/'.$res_arr["SUBDIR"]."/".$res_arr["FILE_NAME"]

А вы используете CFile::GetList в своих скриптах? Делитесь комментариями :).

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *