Массовое редактирование TV поля у родителя с 2 вложенностью

Всем привет, пытаюсь поменять значение TV у ресурсов с родителем 211, который имеет еще подпапки: prnt.sc/-BKzwGVUvUxG

Необходимо заменить значение поля seotitle, сделать его как pagetitle

Пытаюсь в консоли выполнить такой скрипт, однако изменений не происходит. Подскажите пожалуйста, как сделать?

<?php
$resources = $modx->getCollection('modResource',array('parent' => 211));
foreach ($resources as $res) {
$res->set('seotitle', $res->get('pagetitle'));
$res->set('isfolder', 1);
$res->save();
}
Константин
15 июля 2022, 11:12
modx.pro
73
0

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

Роман
15 июля 2022, 11:22
+1
$res->setTVValue('seotitle', $res->get('pagetitle'));
    vectorserver
    15 июля 2022, 11:57
    0
    <?php
    /** @var modX $modx */
    /** @var modResource $resources */
    $resources = $modx->getCollection('modResource',array('parent' => 211));
    foreach ($resources as $res) {
        $res->setTVValue('seotitle',$res->get('pagetitle'));
        $res->set('isfolder', 1);
        $res->save();
    }
      Константин
      15 июля 2022, 13:27
      0
      Спасибо, сработало, но только для 1 уровня вложенности. А есть возможность на все подпапки распространить действие скрипта? prnt.sc/xnhfQGV-tKee
        vectorserver
        15 июля 2022, 16:29
        0
          Константин
          21 июля 2022, 08:04
          0
          <?php
          /** @var modX $modx */
          /** @var modResource $resources */
          $resources = $modx->getChildIds(211,6,array('context' => 'web'));
          foreach ($resources as $res) {
              $res->setTVValue('seodescription',$res->get('pagetitle'));
              $res->set('isfolder', 1);
              $res->save();
          }
          Попробую так, ошибки
          Fatal error: Uncaught Error: Call to a member function setTVValue() on int in
            vectorserver
            21 июля 2022, 08:18
            1
            0
            <?php
            /* @var modX $modx*/
            $getChildIds= $modx->getChildIds(211,6,array('context' => 'web'));
            foreach ($getChildIds as $chId){
                /** @var modResource $res */
                $res = $modx->getObject('modResource',$chId);
                $res->setTVValue('seotitle',$res->get('pagetitle'));
                $res->set('isfolder', 1);
                $res->save();
            }
              Константин
              21 июля 2022, 08:27
              0
              Спасибо большое, сработало. Е есть ли возможность в seotitle не только pagetitle поместить но и добавить содержимое, как то так get('pagetitle+content')?
                vectorserver
                21 июля 2022, 09:07
                1
                0
                <?php
                /* @var modX $modx*/
                $getChildIds= $modx->getChildIds(211,6,array('context' => 'web'));
                foreach ($getChildIds as $chId){
                    /** @var modResource $res */
                    $res = $modx->getObject('modResource',$chId);
                    $res->setTVValue('seotitle',$res->get('pagetitle')." - ".$res->get('description'));
                    $res->set('isfolder', 1);
                    $res->save();
                }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10