Ниже представлен пример обновления ссылок товаров в магазине minishop.
Так как часто встречаются сервера с небольшим количеством оперативной памяти, то мы сделали вариант, при котором можно лимитировать количество обработанных ссылок за раз.
Алгоритм действий прост:
ini_set("memory_limit", "512M"); // лимит памяти
ini_set('max_execution_time', "3200"); // лимит времени выполнения
$limit = 2500; // лимит выборки
$offset = 0; // отступ от начала выборки
$q = $modx->newQuery('msProduct');
$q->limit($limit,offset);
$docs = $modx->getCollection('msProduct',$q);
foreach($docs as $doc){
$title = $doc->get('pagetitle') . '-' . $doc->get('id'); // то как будет выглядеть будущая ссылка, сейчас pagetitle - id
$alias = $doc->cleanAlias($title);
$doc->set('alias', $alias);
$doc->save();
}