Баг при программной заливке изображений в msGallery
Добрый вечер.
При выполнении следующего кода валятся ошибки «Array ( [0] => Такое изображение уже есть в галерее товара. )»
При выполнении следующего кода валятся ошибки «Array ( [0] => Такое изображение уже есть в галерее товара. )»
$products = $modx->getCollection('msProduct');
foreach ($products as $product) {
$path = MODX_BASE_PATH.'products/'.$product->get('id').'.jpg';
if(file_exists($path)) {
$data = [
'id' => $product->get('id'),
'file' => $path,
];
$response = $modx->runProcessor('gallery/upload', $data, array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/'));
if ($response->isError()) {
print_r($response->getAllErrors());
}
}
}
Изображения товаров лежат в корне сайта в папке products и имеют вид кодТовара.jpg В галерею загружается только изображение для первого в списке товара, создаются превьюшки, всё как положено. Остальные игнорируются, как будто это изображение где-то в кеше висит. Комментарии: 4
Попробуйте в конце цикла написать $modx->error->reset();
Не помогает :(
Проверку на дубликаты можно отключить.
Для её работы берутся первые несколько байт, и если грузятся однотипные картинки на белом фоне, то у всех у них первые байты и будут этим белым фоном — отсюда сообщение о дубликате.
Для её работы берутся первые несколько байт, и если грузятся однотипные картинки на белом фоне, то у всех у них первые байты и будут этим белым фоном — отсюда сообщение о дубликате.
Спасибо за подсказки, но всё оказалось проще. После удаления файлов из галереи самописным сниппетом (хотел полностью удалить изображения и перезалить их заново) в таблице ms2_product_files остались адреса этих изображений. Сделал truncate и всё заработало.
Мораль — в 2 часа ночи нужно спать.
Мораль — в 2 часа ночи нужно спать.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.