Поменять определенное значение TV у всех ресурсов

Допустим, у ресурсов есть tvparam=1, как пройтись по всем ресурсам и поменять tvparam=1 на tvparam=0 через Console?
Evgeny Epifanov
30 июля 2014, 17:33
modx.pro
3
1 478
0

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

Илья Уткин
30 июля 2014, 22:20
+1
$resources = $modx->getCollection('modResource', array('parent' => 1));
foreach ($resources as $resource) {
  if ($resource->getTVValue('tvparam') == 1) {
    $resource->setTVValue('tvparam',0);
    $resource->save();
  }
}
    Evgeny Epifanov
    30 июля 2014, 22:22
    0
    Так и знал, что ты ответишь)) Спасибо. Илья, поясни пожалуйста первую строчку.
      Илья Уткин
      30 июля 2014, 22:26
      0
        Evgeny Epifanov
        30 июля 2014, 22:33
        0
        Что значит:
        array('parent' => 1)
        Изменения коснуться только дочерних ресурсов родителя с id=1?
        Извини за банальные вопросы.
          Илья Уткин
          30 июля 2014, 22:41
          0
          Ага
            Evgeny Epifanov
            31 июля 2014, 02:23
            0
            А как пройтись по всем ресурсам? Контейнеров много…
              Evgeny Epifanov
              31 июля 2014, 02:36
              0
              Или как задать глубину поиска, чтобы можно было изменить все из parent=0?
                Алексей Ерохин
                31 июля 2014, 02:44
                +1
                Попробуй использовать
                $modx->getChildIds($parent,$depth,array('context' => 'web'));
                возвращает массив ID
                $resources = $modx->getChildIds($parent,$depth,array('context' => 'web'));
                $resources = $modx->getCollection('modResource', array('id:IN' => $resources));
                foreach ($resources as $resource) {
                  if ($resource->getTVValue('tvparam') == 1) {
                    $resource->setTVValue('tvparam',0);
                  }
                }
                Если нужны только ресурсы, причем все, то
                $resources = $modx->getCollection('modResource', array('isfolder' => 0));
                  Evgeny Epifanov
                  31 июля 2014, 03:49
                  0
                  Спасибо большое. Работает.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9