Как сделать изменение параметров во всех товарах через Console

Добрый день!

Через следующий плагин, меняю в товарах определенного родителя свойства:
<?php
if($scriptProperties['mode']=='upd' && $resource->get("parent") == 15){ 

  $resource->set('color_stone', array('--ФИАНИТЫ--','Бесцветные','Черные','Черно-белые','Зелено-белые','Коньячно-белье','Сиренево-белый','Зелено-белые','Цветные', '-Полудрагоценные камни-','Микс','Хризолит','Гранат','Цитрин','Топаз','Аметист','Раухтопаз','Бирюза','Оникс','Кварц зеленый','Ситал','Аквамарин','Александрит','Турмалин','Лондон топаз','Свис топаз','Родолит'));
  $resource->set('color_metal', array('белый', 'красно-белый','красно-лимонно-белый','красный','лимонно-белый', 'лимонный'));
  $resource->set('size', array('15', '15.5', '16','16.5','17','17.5','18','18.5','19','19.5','20','20.5','21','21.5','22','22.5'));
  $resource->save();
}
Плагину назначено событие: OnDocFormSave
Товаров больше сотни, как через console обработать все товары, чтоб не заходить на каждый и не пересохранять????

Нашла следующий скрипт для обработки в консоле, но он не срабатывает, а я не могу понять как исправить:

<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
    sleep(0.5);
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset']);
} 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 '_';
    }
}
$current = isset($_SESSION['console_offset']) ?
           $_SESSION['console_offset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Ника
07 декабря 2018, 10:49
modx.pro
704
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0