Yandex Metrika
sanches.free 1 просмотр

Как удалить превью, детальную картинку и галерею у элемента инфоблока

Когда нужен программный сброс медиа

Импорты каталогов, синхронизация с ERP и тихие ошибки генерации анонсов приводят к ситуации, когда у элемента инфоблока нужно просто обнулить картинки: убрать анонсовое и детальное изображение и вычистить набор файлов во множественном свойстве. Ниже — короткая схема на классическом API, которая хорошо уживается с кодом ядра D7.

Подключение модуля

Перед любой работой подключите инфоблоки вызовом загрузчика:

use Bitrix\Main\Loader;

Loader::includeModule('iblock');

Превью и детальная картинка

Поля файлов элементов связаны со стандартными ключами массива. Чтобы удалить их физически и обнулить привязки, передайте вложенную конструкцию с флагом удаления без запуска истории версий документа:

$cardId = 41288;
$editor = new \CIBlockElement;

$editor->Update($cardId, [
    'PREVIEW_PICTURE' => ['del' => 'Y'],
    'DETAIL_PICTURE'  => ['del' => 'Y'],
], false, false);

Последние два аргумента false, false отключают пересборку счётчиков и полный цикл журнирования там, где он не нужен — для разовых миграций это уменьшает нагрузку.

Файловое свойство множественного типа

Снимок миниатюр для карточки или вторичное фото можно хранить в пользовательском свойстве множества файлов. Чтобы удалить уже сохранённые значения, используйте метод установки свойств без ручной выборки старых ID:

$cardId       = 41288;
$catalogIbId  = 12;
$filePropCode = 'BRAND_MEDIA'; // символьный код множественного свойства типа файл

\CIBlockElement::SetPropertyValuesEx(
    $cardId,
    $catalogIbId,
    [
        $filePropCode => [
            'VALUE' => ['del' => 'Y'],
        ],
    ]
);

Значение $filePropCode замените на реальный символьный код из настроек инфоблока. Если свойство простое и не множественное, структура массива будет проще — без вложенного 'VALUE'. После любых изменений имеет смысл пересмотреть кеш комплексных компонентов каталога, если он включён статическими или тегированными стратегиями.

Итог

Две точки входа достаточны для типовой санитизации медиаданных: CIBlockElement::Update для системных файлов анонса и детальной части и SetPropertyValuesEx для пользовательских файловых полей множества.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии