Удалять существующие дополнительные изображения через "import.xml" CommerceML

Нашли в импорте через админку чекбокс “Удалить существующие дополнительные изображения”. Нам не удобен способ импорта через админку, мы используем “CommerceML (1С)”

В инструкции по “import.xml” CommerceML (https://www.cs-cart.ru/docs/4.11.x/developer_guide/1c/catalogxml.html) нет информации о том, как можно удалять существующие дополнительные изображения в момент обновления товара.

Уточните, как через “import.xml” CommerceML удалять существующие дополнительные изображения в момент обновления изображений товара?

Вопрос конечно интересный. Тоже интересует.
Знатоки CommerceML, где вы? :no_mouth:

Видимо, только допиливать

Нашел такой вариант решения:

  1. Выполнить экспорт товаров с дублирующимсися изображениями, экспортировав только поля Код и URL увеличенного изображения.
  2. Выполнить импорт этого файла со включенной настройкой Удалить существующие дополнительные изображения, в следствии чего, у товаров останутся только основные изображения.
  3. Выполнить выгрузку изображений из 1С в CS-Cart.

Как узнать, какие товары с дубликатами фото, а какие нет?

откройте
/app/addons/rus_exim_1c/Tygh/Commerceml/RusEximCommerceml.php
Далее ищем public function addProductImage($images, $product_id, $import_params)
Добавляем

    if ($this->s_commerceml['exim_1c_all_images_is_additional'] == 'Y' && ((isset($import_params['object_type']) && $import_params['object_type'] == 'product') ||  !isset($import_params['object_type']))) {
      fn_delete_image_pairs($product_id, 'product', 'A');
    }

Если разрешены дополнительные изображения и сейчас загружается товар, удаляются все дополнительные фотографии для этого товара.

p.s. код не проверял, по этому сначала на тесте/дев

1 лайк

Такое ощущение, что, если изображений несколько, то при добавлении каждого будут удаляться все предыдущие

Ну если вставить в foreach то да будут каждый раз удалятся, надо до, функция то вызывается 1 раз для каждого товара, значит должно все окей отработать. Странно, что такое функционал не внедрили в модуль.

Мы делали для всех товаров. А потом все загружали заново актуальные через 1C