Удалить все фото товара через API
        Всем привет.
Простой вопрос поставил в тупик — как удалить через API все фото товара?
Я так понимаю такой процессор нужно запускать, но как туда переждать ID фоток зная ID товара?
    
    
                                                                                
            Простой вопрос поставил в тупик — как удалить через API все фото товара?
Я так понимаю такой процессор нужно запускать, но как туда переждать ID фоток зная ID товара?
$response = $modx->runProcessor('components/minishop2/processors/mgr/gallery/multiple',array(
		'method' => 'remove',
		'ids' => '1291,1292',
	));    Комментарии: 3
                Вот такой код, но почему-то не работает(
на примере одного товара
                    на примере одного товара
<?php
$images = $modx->getCollection('msProductFile', array('type' => 'image', 'product_id' => 306, 'parent' => 0));
$ids = array();
foreach ($images as $image) {
    $ids[] = $image->get('id');
    }
$response = $modx->runProcessor('gallery/multiple',
	array(
		'method' => 'remove',
		'ids' =>$ids,
	),
	array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
);
if ($response->isError()) {
	$modx->log(modX::LOG_LEVEL_ERROR, "Error \"$v\": \n". print_r($response->getAllErrors(), 1));
}
else {
	$modx->log(modX::LOG_LEVEL_INFO, "Successful  \"$v\": \n". print_r($response->getObject(), 1));
}
	
print_r($response->response);            
                Проблема была в том, что $ids нужно отдавать процессору в JSON
Вот так работает, оставлю тут, может кому-то еще пригодится
                    Вот так работает, оставлю тут, может кому-то еще пригодится
<?php
$images = $modx->getCollection('msProductFile', array('type' => 'image', 'parent' => 0));
$ids = array();
foreach ($images as $image) {
    $ids[] = $image->get('id');
    }
$response = $modx->runProcessor('gallery/multiple',
	array(
		'method' => 'remove',
		'ids' => json_encode($ids),
	),
	array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
);
if ($response->isError()) {
	$modx->log(modX::LOG_LEVEL_ERROR, "Error \"$v\": \n". print_r($response->getAllErrors(), 1));
}
else {
	$modx->log(modX::LOG_LEVEL_INFO, "Successful  \"$v\": \n". print_r($response->getObject(), 1));
}
	
print_r($response->response);            
                Удалить изображения в базе
                    $q = $modx->newQuery('msProduct');
$q->innerJoin('msProductData', 'Data', 'msProduct.id = Data.id');
$q->where(array(
    'msProduct.parent:IN' => [30396,30397,30398], 
    'msProduct.published' => 1, 
    'msProduct.deleted' => 0)
);
$q->sortby('msProduct.id','ASC');
$products = $modx->getIterator('msProduct', $q);
foreach ($products as $product) {
    if ($images = $modx->getCollection('msProductFile', array('product_id' => $product->id, 'parent' => 0))) {
        $ids = array();
        foreach ($images as $im) {
            $ids[] = $im->get('id');
        }
        $response = $modx->runProcessor('gallery/multiple',
        	array('method' => 'remove', 'ids' => json_encode($ids)),
        	array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
        );
        // remove files on dir
        $remove_files = glob(MODX_BASE_PATH.'assets/images/products/'. $id.'/*');
        foreach ($remove_files as $remove_file) {
            if (is_file($remove_file)) {
                unlink($remove_file); // delete file
            }
        }
    }
}Перегенерировать превью товара при загрузке после импорта$q = $modx->newQuery('msProduct');
$q->innerJoin('msProductData', 'Data', 'msProduct.id = Data.id');
$q->where(array('msProduct.parent:IN' => [30396,30397,30398], 
    'msProduct.published' => 1, 'msProduct.deleted' => 0));
$q->sortby('msProduct.id','ASC');
$products = $modx->getIterator('msProduct', $q);
$i = 0;
foreach ($products as $product) {
    $i++;
    
    if ($images = $modx->getCollection('msProductFile', array('product_id' => $product->id, 'parent' => 0, 'rank' => 0))) {
        $ids = array();
        foreach ($images as $im) {
            $ids[] = $im->get('id');
            $image = $im->get('url');
        }
        $response = $modx->runProcessor('gallery/multiple',
        	array('method' => 'generate', 'ids' => json_encode($ids)),
        	array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
        );
        $product = $modx->getObject('msProduct', $product->id);
        $product->set('image', $image);
        $product->save();
    }
}Номера родительских категорий следует сменить, смотрите внимательно. На всякий случай сделайте бэкап.            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.