Используем 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *