Поменять определенное значение TV у всех ресурсов
Допустим, у ресурсов есть tvparam=1, как пройтись по всем ресурсам и поменять tvparam=1 на tvparam=0 через Console?
Комментарии: 9
$resources = $modx->getCollection('modResource', array('parent' => 1));
foreach ($resources as $resource) {
if ($resource->getTVValue('tvparam') == 1) {
$resource->setTVValue('tvparam',0);
$resource->save();
}
}
Так и знал, что ты ответишь)) Спасибо. Илья, поясни пожалуйста первую строчку.
В первой строчке мы получаем в массиве нужные нам ресурсы.
Что значит:
Извини за банальные вопросы.
array('parent' => 1)
Изменения коснуться только дочерних ресурсов родителя с id=1? Извини за банальные вопросы.
Ага
А как пройтись по всем ресурсам? Контейнеров много…
Или как задать глубину поиска, чтобы можно было изменить все из parent=0?
Попробуй использовать
$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));
Спасибо большое. Работает.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.