Как пересохранить товары в minishop2 через Console

Добрый день! Появилась проблема с появлениями новых опций в minishop2, когда добавляю новые опции они появляются пустные уже у добавленных товарах на сайте. Они пропадают когда пересохраняю товар.

Собственно вопрос, как массово пересохранить все товары в minishop2 через Console?
Роман
10 мая 2021, 21:00
modx.pro
656
0

Комментарии: 6

Артур Шевченко
10 мая 2021, 22:12
0
$products = $modx->getIterator('modResource', array('class_key' => 'msProduct');
foreach($products as $product){
 $product->save();
}
А ты уверен, что дело не в кэше?
    Aleksandr Huz
    10 мая 2021, 22:39
    0
    И ничего не поменяется. Нужно использовать процессор.
    $products = $modx->getIterator('modResource', array('class_key' => 'msProduct');
    foreach($products as $product){
        $response = $modx->runProcessor('resource/update', $product->toArray());
        if($response->isError()){
             echo $response->getMessage();
        }
    }
      Роман
      10 мая 2021, 22:44
      0
      Так тоже ничего не меняется, кеш чистил через админку и удалял в /core/cache

      Результат:
      SQL time: 4.0202 s
      SQL queries: 20858
      PHP time: 25.8807 s
      Total time: 29.9009 s
      Memory: 32 MB
        Aleksandr Huz
        10 мая 2021, 22:52
        0
        Попробуйте так:
        $products = $modx->getIterator('msProduct', array('class_key' => 'msProduct');
        foreach($products as $product){
            $response = $modx->runProcessor('mgr/product/update', $product->toArray(), array('processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/'));
            if($response->isError()){
                 echo $response->getMessage();
            }
        }
          Роман
          10 мая 2021, 22:59
          0
          Так ошибка выходит:

          PHP warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'modMgrProductUpdateProcessor' not found

          Fatal error: Cannot declare class msProductUpdateProcessor, because the name is already in use in…
            Aleksandr Huz
            10 мая 2021, 23:56
            0
            Наверное, легче пройтись по опциям и пустые удалить с базы
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6