24 апр13:34

MODX Массовое обновление TV или другое поле через базу

Скачиваем и устанавливаем дополнение Console  и запускаем там скрипт:

$q = $modx->newQuery('modResource');
// 25 - это ID дополнительного поля.
// Через $q->leftJoin(...) мы подключаем к выборке доп. поля
$q->leftJoin('modTemplateVarResource', 'TV25', 'modResource.id = TV25.contentid AND TV25.tmplvarid = 25');
$q->where(array(
  // Тут можно настроить условия выборки. Можно либо строкой, либо массивом с добавлением ":IN"
  //'modResource.pagetitle:IN' => array(2),
  'TV25.value' => "Karelia Upoflor"
));
$q->select(array(
  'modResource.id as id'
  ,'modResource.menutitle as menutitle'
  ,'TV25.value as TV25_value'
));
 
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
 
//print_r($res);
 
foreach($res as $v){
  $res = $modx->getObject('modResource', $v['id']);
  $res->setTVValue('anketa_manufacturer','Karelia');
  $res->save();
}

  • 76

Поиск