Превратить ресурсы в товары

Родительский ресурс — коллекция.
Дочерние — обычные документы.

Родительский ресурс надо превратить в каталог минишопа. Тут проблем нет.
Вопрос с дочерними ресурсами, их порядка 100. Открывать каждый и менять тип — так себе затея.

Можно ли скриптом (все дочерние определенного родителя) это сделать, есть варианты?
Скаут
30 января 2019, 17:54
modx.pro
681
0

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

Владимир
30 января 2019, 17:56
0
получаете id коллекций, далее ищите ресурсы в парентом = id, затем
resource->set('class_key','msProduct');
resource->save();
    Скаут
    31 января 2019, 20:53
    0
    нагуглил два варианта:
    этот:
    $parent = 2;
    
    $query = $modx->newQuery('modResource');
    $query->where(array('parent' => $parent));
    $childs = $modx->getCollection('modResource',$query);
    
    foreach ($childs as $child) {
      $child->set('class_key','msProduct');
      $result = $child->save();
      if(!$result){
          echo 'Error for id='.$child->get('id');
      }
    }
    echo 'Done!';
    и такой, более простой:
    $parent = 2; 
    foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {
    	$resource->set('class_key','msProduct');
    }
    Оба работают, но, также, оба в лог высыпают ошибку:
    (ERROR in modProcessor::run @ /home/s17279/www/core/model/modx/modprocessor.class.php: 177) Flat file processor support is deprecated since version 2.7.0.


    Я так понимаю, какая-то устаревшая функция используется? Какая можете подсказать? Не критично, но всё же
      Владимир
      01 февраля 2019, 10:32
      0
      Функция не устаревшая, вы используете modx версии 2.7, это переходная версия к 3.X, там метод save и set сделаны по-другому. Чтобы отключить эти предупреждения, установите системную настройку log_deprecated в состоянии выключено.
    Андрей Шевяков
    31 января 2019, 10:34
    0
    Дополнение в помощь Batcher
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4