Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Как почистить несуществующие картинки в инфоблоке Битрикс



Иногда бывает  (например при переносе сайта без картинок), что у элемента инфоблока указано, что есть картинка, и в таблице файлов запись есть, а файла картники не существует
У меня если нет PREVIEW_PICTURE, то и нет DETAIL_PICTURE

CModule::IncludeModule('iblock');
$el = new CIBlockElement;  
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "PREVIEW_PICTURE");
$arFilter = Array("IBLOCK_ID"=>10, "!PREVIEW_PICTURE"=>false);
//выбираем по 5000 элементов, чтобы сервер не офигел,  меняем номер  iNumPage от 1 до нужного количества 
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>5000,"iNumPage"=>2), $arSelect); 
while($ob = $res->GetNextElement()){ 
   $arFields = $ob->GetFields();  
   $arFile = CFile::GetFileArray($arFields["PREVIEW_PICTURE"]);
   $src = $_SERVER["DOCUMENT_ROOT"] . $arFile["SRC"];
   if($arFile && (!file_exists($src) )){
      echo $arFields["ID"]."<br>";
      $el->Update($arFields["ID"], array("PREVIEW_PICTURE"=>array('del' => 'Y'),"DETAIL_PICTURE"=>array('del' => 'Y')));
   }   
       
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!