Как обновить все превью minishop2

Для того чтобы обновить превью картинок в minishop2 MODX REVO необходимо выполнить действия описанные ниже.

Устанавливаем компонент Console, далее вставояем скрипт ниже.

define('MODX_API_MODE', true);
require 'полны_путь/index.php'; // Этот файл лежит в корне сайта


// >> Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
// << Включаем обработку ошибок


if(!isset($parents)) { $parents = 2; }    // Можно указать список категорий для поиска товаров
if(!isset($resources)) { $resources = ''; } // Можно указать конкретный список товаров

$pdo = $modx->getService('pdoFetch');
$condition = array('parents' => $parents);
$files = $pdo->getCollection('msProduct',
  array(
    'msProduct.class_key' => 'msProduct',
  ),
  array(
    'class' => 'msProduct',
    'parents' => $parents,
    'resources' => $resources,
    'innerJoin' => array(
      'msProductFile' => array(
        'alias' => 'msProductFile',
        'on' => array(
          'msProduct.id = msProductFile.product_id',
          'msProductFile.parent' => 0,
          'msProductFile.type' => 'image',
        )
      )
    ),
    'select' => array(
      'msProductFile' => 'all'
    ),
    'sortby' => 'msProduct.id'
  )
);

print $pdo->getTime();

foreach($files as $row)
{
  $file = $modx->newObject('msProductFile');
  $file->fromArray($row, '', true, true);

  $children = $file->getMany('Children');
  foreach($children as $child)
  {
    $child->remove();
  }
  $file->generateThumbnails();

  // Обновляем thumb и image товара
  if($product = $file->getOne('Product'))
  {
    $product->updateProductImage();
  }
}

print microtime(true) - $modx->startTime;