Еще раз всем привет! Есть вопрос как удалять текущее фото при импорте товара без фото?
Какой запрос нужно сделать?
А какое значение будет приходить если товар без фото придет?
В новом модуле Commerceml хотим сделать так, чтобы при выгрузке товара без изображения. Нынешнее изображение удалилось и товар исчез из зоны видимости пользователя. Каким образом можно сделать его?
В файле ProduсtImporter.php, в функции private function importProductImages
. Хочу написать условие, при котором "если импорт с 1с произвелось без изображения товара, то выполняется функция удаления изображений fn_delete_image_pairs
. Как именно можно поставить такое условие? И вообще сработает ли оно?
Создал свою настройку в файле addons/commerceml/schemas/cml/settings.php
В строке 83 дописал новый вариант delete_image_lock
Появился чексбокс. Потом добавил в файле addons/commerceml/src/Importers/ProductImporter.php
if (empty($current_product_data['images']) && $strategy === 'delete_image_lock') {
$product_data['status'] = $import_storage->getSetting('catalog_importer.new_product_status', ObjectStatuses::HIDDEN);
} else {
$product_data['status'] = $import_storage->getSetting('catalog_importer.new_product_status', ObjectStatuses::ACTIVE);
}
@ecomlabs @alex_vp @alexbranding Гуру cscart подскажите пожалуйста, что не правильно сделал и каким путем такое осуществить
Нужно дебажить и вникать в код. Так, с лету, не могу сказать в чем может быть затык
Пытался посмотреть через fn_print_r и через fn_print_die, но не показывает. Пришел к выводу что таким образом не получиться увидеть какие значения у массивов есть. Начал читать код. Понял, понял что импорт продукта идет благодаря функциям ProductImport.php. Как понять какие я данные получаю при своих условиях и какие массивы мне не нужны?
Через контроллер начал смотреть какие данные передается. Очень много данных начал еще жестко запутываться!(
Получилось! В файле ProductImporter.php создал условие
if (!empty($current_product_data['images']) && $strategy === 'delete_image_lock') {
$this->product_storage->removeImagePairs(array_column($current_product_data['images'], 'pair_id', 'image_path'));
$this->product_storage->fn_delete_product($product);
}
Теперь при переключении radioButton она будет удалять фотки товаров.
Теперь нужно чтобы при выборе replace она проверяла $current_product_data и удаляла товары которые пришли без фото. До этого отправлял в фото и удалялась, но только если выбран delete_image_lock
Внизу сделал такое:
case 'delete_image_lock':
if ($product_data['category_ids'] = $category_ids) {
unset($current_product_data['images']);
} else {
$product_data['main_category'] = reset($category_ids);
$product_data['category_ids'] = $category_ids;
}
break;
Перенес в обнову из за вариаций не получилось