Удалить первое фото из галереи minishop2 всех твоаров
Здравствуйте. Как удалить первое фото у всех товаров магазина на minishop2?
Спасибо
Спасибо
Комментарии: 6
Как то так. Только сделайте прежде бекапы файлов и бд. Код выполняется в console.
if (!$ms2 = $modx->getService('minishop2')) return;
$step = 5;
if (!isset($_SESSION['Console']['completed'])) {
$_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
$q = $modx->newQuery('msProductData');
$total = $modx->getCount('msProductData', $q);
$q->limit($step, $offset);
$resources = $modx->getIterator('msProductData', $q);
foreach ($resources as $productData) {
$c = $modx->newQuery('msProductFile');
$c->where(array(
'parent' => 0
));
$c->sortby('rank','asc');
if($files = $productData->getMany('Files',$c)){
$firstFile = reset($files);
$response = $modx->runProcessor('mgr/gallery/remove',
array('id' => $firstFile->id),
array('processors_path' => $ms2->config['corePath'] . 'processors/') );
if($response->isError()){
echo $response->getMessage(), PHP_EOL;
}
}
}
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
$sucsess = 100;
$_SESSION['Console']['completed'] = true;
} else {
$sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
$_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
if ($i <= $sucsess) {
print '=';
} else {
print '_';
}
}
print "\n";
print $sucsess.'% ('.$_SESSION['console_offset'].')'."\n\n";
Большое спасибо. Сегодня попробую и отпишусь сюда
Вроде работает. Спасибо еще раз)
reset($files);
что делает?
разодрался
я подумал что это функция modx
тогда еще вопрос
что значит
я подумал что это функция modx
тогда еще вопрос
что значит
'parent' => 0
Это поле в таблице, которое означает что это изначальное фото до преобразований.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.