В исходниках битрикса есть CAllFile::GetList($arOrder, $arFilter, $arParams); но он видимо служит для внутреннего использования и не описан в документации. Нам нужно выбрать описание по 10 файлам за раз, этот метод, в качестве параметра фильтра массив из ID файлов не принял. Пришлось накидать свою функцию.
function __arfileGetList($ar_FileID)
{
if(is_array($ar_FileID) && count($ar_FileID) > 0)
{
global $DB;
$rs_File = $DB->Query(
"SELECT * FROM b_file WHERE ID IN
(". implode(',', $ar_FileID). ")",
false,
"FILE: ".__FILE__." LINE: ".__LINE__
);
while($ar_File = $rs_File->Fetch())
{
$ar_Result[] = $ar_File;
}
if(is_array($ar_Result) && count($ar_Result) > 0)
return $ar_Result;
}
}
P/S
Не забудте проверить $ar_FileID, чтобы там были именно ID файлов…
//@2DO: внести в ветку ифа работу с превьюшкой и детальной картинкой
//@BUG: максим Смирнов признал баг в API, в следующий апдейт должны починить
// конвертируем массив в строку
$strFileID = »;
foreach($arFilesID as $fileID)
{
$strFileID .= $fileID . ‘,’;
}
// отрезаем последнюю запятую
$strFileID = substr($strFileID,0, strlen($strFileID)-1);
// в фильтр добавляем плейсхолдер
$arFilesID = array(«@ID» => $strFileID);
// делаем запрос
$arResultFiles = array();
$rcsFiles = CFile::GetList(false, $arFilesID, false);
while($arFile = $rcsFiles->GetNext())
{
// делаем реврайтинг и создаём поле SRC
// в поле SRC хранится путь к ресурсу
$src = «/».(COption::GetOptionString(«main», «upload_dir», «upload»)).»/».$arFile[«SUBDIR»].»/».$arFile[«FILE_NAME»];
$src = str_replace(«//»,»/»,$src);
if(defined(«BX_IMG_SERVER»))
$src = BX_IMG_SERVER.$src;
$arFile = $arFile + Array(«SRC» => $src);
$arResultFiles[$arFile[‘ID’]] = $arFile;
}
У меня вот так вполне неплохо работает
$arFilesID = array(‘ID’ => $strFileID); я сюда массив подставил, а не строку с ID, спасибо Максим…
И
$strFileID = »;
foreach($arFilesID as $fileID)
{
$strFileID .= $fileID . ‘,’;
}
Лучше заменить на implode(‘,’, $arFilesID)
За сколько сделаете шаблон для Битрикс по скриншоту?
+79161923571 katorgin@gmail.com
Вадим
Спасибо
О, спасибо, с форычем затупил.
foreach($arFilesID as $fileID)
{
$strFileID .= $fileID . ‘,’;
}
встроенная функция должна же быть быстрее?
$strFileID = implode(‘,’, $arFilesID);