$test = Bitrix\Main\FileTable::GetList(); $goods = CIBlockElement::GetList('', array('IBLOCK_ID' => 7)); $arPics = []; while($p = $goods->fetch()){ $pic = CFile::getById($p['DETAIL_PICTURE'])->fetch(); //var_dump($pic); $arPics[$p['ID']] = ['ID' => $p['DETAIL_PICTURE'],'NAME' => $pic['FILE_NAME'], 'DIR' => $pic['SUBDIR']]; } foreach($arPics as $key => $arPic){ if(stripos($arPic['NAME'], ' ') != false){ $arPic['NAME'] = str_replace(" ", "-", $arPic['NAME']); //COPYFILE $newPic = CFile::CopyFile($arPic['ID'], false, $arPic['DIR'].'/'.$arPic['NAME']); //update элемента $upd = new CIBlockElement; $upd->Update($key, array('DETAIL_PICTURE' => CFile::MakeFileArray('/upload/'.$arPic['DIR'].'/'.$arPic['NAME']))); //удаление старых файлов CFile::Delete($arPic['ID']); } }
Проблема: если в названии изображения есть пробелы в письмах такие изображения не будут отображаться т.к. почтовики заменяют пробелы на плюсы Решение: Мы написали скрипт который переименовывает все фотки в каталоге и заменяет пробел на тире