как пересохранить 2000 ресурсов ?
        Доброго дня, суть вопроса в том как я могу программно пересохранить 2000 ресурсов, понадобилось добавить еще одно поле в которое должно подтягиваться значение ответа от сервера яндекса, но плагин записывает значение при сохранении ресурса, заранее спасибо    
    
    
                                                                                
            Комментарии: 16
                Ставите Console.
Выполняете код:
                    Выполняете код:
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(2))
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();
}Так как у вас документов много, советую сначала прогнать только корневые документы (добавить в запрос $q->where(array('parent' => 0));), а потом по каждому разделу в отдельности, указывая соответствующий parent.            
                а нет разделов, спасибо большое !)            
                    
                Ну ОК.
Пожалуйста.
                    Пожалуйста.
                И не забываем про бэкапы:)            
                    
                само собой )            
                    
                А если вложенность 5 уровней и больше, и по каждому «пробежаться» — очень долго получается. Как указать один корневой раздел и условие по id шаблона (независимо от уровня вложенности). Не подскажете?
====
То есть раздел, у которого id=2 и внутри него пересохранить все ресурсы, у которых template=4
====
Заранее большое спасибо.
                    ====
То есть раздел, у которого id=2 и внутри него пересохранить все ресурсы, у которых template=4
====
Заранее большое спасибо.
                docs.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
Вообще заметил тендецию, в последнее время, что старые посты некрофилируют. Все давно уже в доках
                    Вообще заметил тендецию, в последнее время, что старые посты некрофилируют. Все давно уже в доках
                Спасибо. А на конкретном примере как будет выглядеть код? Спасибо            
                    
                Если я правильно понял. Но что-то не работает.
                    <?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$q->where(array('parent' => 2));
$q->where(array('template' => 4));
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(0))
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();            $resources = $modx->getChildIds(2, 10, array('context'=>'web'));
....
$q->where(array('id:IN' =>$resources));
$q->where(array('template' => 4));            
                Покажусь нубом, но тем не менее… В Console не выполняет
                    <?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$resources = $modx->getChildIds(2, 10, array('context'=>'web'));
$q->where(array('id:IN' =>$resources));
$q->where(array('template' => 4));
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(0))
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();Огромное спасибо за отклик. Но как будет полный вариант выглядеть?            while($row = $s->fetch(2)) {
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();
}Скобочки фигурные потеряли, и в fetch нужно 2 (PDO::FETCH_ASSOC) указывать, чтобы ассоциативный массив получить            
                При 
                    <?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$resources = $modx->getChildIds(2, 10, array('context'=>'web'));
$q->where(array('id:IN' =>$resources));
$q->where(array('template' => 4));
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(0))
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();
}Ругается на синтаксис: Parse error: syntax error, unexpected '}' in .../core/components/console/processors/exec.class.php(24): eval()'d code            
                Скобочка фигурная }
                    while($row = $s->fetch(0)) {Посмотрите внимательнее, пожалуйста.            
                Алексей, благодарю за помощь. 
Висит и не завершает в Console
                    Висит и не завершает в Console
<?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$resources = $modx->getChildIds(2, 10, array('context'=>'web'));
$q->where(array('id:IN' =>$resources));
$q->where(array('template' => 4));
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(0)) {
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();
}            
                Так и не пойму, в чем проблема. Поправил то, о чем Вы написали, но не работает. 
                    <?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$resources = $modx->getChildIds(2, 10, array('context'=>'web'));
$q->where(array('id:IN' =>$resources));
$q->where(array('template' => 4));
$q->sortby('id');
$q->select(array(
	"{$c}.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(2)) {
	$response = $modx->runProcessor('resource/update', $row);
	if($response->isError()){
		print_r($response->getResponse());
		return;
	}
	$modx->error->reset();
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.