Как можно сформировать пути к изображениям не используя 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 в своих скриптах? Делитесь комментариями :).