Ниже представлен пример обновления ссылок товаров в магазине 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();
}