Обновить все url у товаров
$docs = $modx->getCollection('msProduct');
foreach($docs as $doc){
    $title = $doc->get('pagetitle') . '-' . $doc->get('id');
    $alias = $doc->cleanAlias($title);
    $doc->set('alias', $alias);
    $modx->runProcessor('resource/update', $doc->toArray());
    // $doc->set('alias', '');
    // $doc->save();
}сначала удалил все // $doc->set('alias', '');
    // $doc->save();потом запустил данный код и очень долго идет процесс обновления если прописать $modx->getCollection('msProduct',array('parent'=>3404));то он обновит ссылки у нужной категории и выдает кучу таких ошибок[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/semena-czvetov/balzamin-uollera-f1.html already exists for resource id = 3530; skipping duplicate resource URI for resource id = 5273
[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/parniki-i-ukryivnyie-materialyi/.html already exists for resource id = 5156; skipping duplicate resource URI for resource id = 5495
[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/parniki-i-ukryivnyie-materialyi/.html already exists for resource id = 5156; skipping duplicate resource URI for resource id = 5635
[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/parniki-i-ukryivnyie-materialyi/.html already exists for resource id = 5156; skipping duplicate resource URI for resource id = 6421
[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/semena-czvetov/odnoletnie/.html already exists for resource id = 3964; skipping duplicate resource URI for resource id = 4752
[2016-07-27 10:15:02] (ERROR @ /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/model/modx/modcachemanager.class.php: 100)
Resource URI kategoriya-s-tovarami/semena-czvetov/odnoletnie/.html already exists for resource id = 3964; skipping duplicate resource URI for resource id = 5646
я посмотрел по id эти товары не находятся в данной категории, но почему то выдает ошибку по ним.
Как избавится от ошибок и обновить ссылку у всех товаров?
Комментарии: 14
                Вчитайся в ошибку Resource URI kategoriya-s-tovarami/semena-czvetov/odnoletnie/.html ты присваиваешь кривой алиас, из-за этого он у тебя и дублируется. И вместо getCollection — 
                    $modx->getIterator(); Для экономии памяти. А для ускорения работы можно поиграться с$q->select(); Если будут проблемы с выборкой(CRC) modxclub.ru/topics/xpdoaddderivativecriteria-class-key-crc-i-prochie-svyazannyie-drug-s-drugom-tonkosti.html            
                Как я могу прописывать кривой алиас если он берется из тайтла не пойму? а у каждного абсолютно товара есть тайтл            
                    
                почему ты просто не сохраняешь объект? 
                    $doc->save(); А через процессор?            
                он его не сохраняет уже пробовал, в интернете почитал 
modx.pro/help/2415/
modx.pro/help/5862/
вот эти темы говорят что надо через процессор и работает если указываю небольшую категорию где мало товаров, а все товары никак не могу обновить не знаю в чем дело в ошибки или в чем (
                    modx.pro/help/2415/
modx.pro/help/5862/
вот эти темы говорят что надо через процессор и работает если указываю небольшую категорию где мало товаров, а все товары никак не могу обновить не знаю в чем дело в ошибки или в чем (
                вот что выдает один цикл этого кода
prntscr.com/by2iij
не могу понять я работаю только с одним товаром с айдишником 6630 дальше идет break; почему ошибки выдаются по товарам с другим айдишником?
                    prntscr.com/by2iij
не могу понять я работаю только с одним товаром с айдишником 6630 дальше идет break; почему ошибки выдаются по товарам с другим айдишником?
                Как варианты: посмотреть response от работы процессора. И может быть, ты меняешь исправно, ошибки идут о других ресурсах, которые даже не участвуют? Ну, например: ты обновляешь для 1,2,3,4. А ошибки выбивает для 5 = 7, 6 =7. Собственно, нужно будет их и исправить потом            
                    
                сейчас запустил такой код и он заработал
                    $docs = $modx->getCollection('msProduct');
foreach($docs as $doc){
    $title = $doc->get('pagetitle') . '-' . $doc->get('id');
    $alias = $doc->cleanAlias($title);
    $doc->set('alias', $alias);;
    $doc->save();
}походе вы были правы можно и без процессора, почему у меня раньше так не получилось не могу понять, скрипт начал выполняться подожду результата            
                через какое то время выдал мне вот такое 
prntscr.com/by2mse
вылечил удалив недавнюю историю браузера, но это не здоровая штука ((
                    prntscr.com/by2mse
вылечил удалив недавнюю историю браузера, но это не здоровая штука ((
                ну дак вылетев из-за большого времени. Как я говорил можно через 
                    $modx->getIterator(). Если через твой вариант $q = $modx->newQuery('msProduct');
$q->limit('500','0'); //($limit,$offset)
$docs = $modx->getCollection('msProduct',$q); Играйся с limit & offset. Делай частями            
                А вот с getIterator 
                    $q = $modx->newQuery('msProduct');
$q->limit('500','0'); //($limit,$offset)
$modx->addDerivativeCriteria('msProduct', $q);// 
$docs = $modx->getIterator('msProduct', $q);            
                После вылечивания проверил все ссылки все везде стоит и ошибок больше нет, спасибо вам за помощь!!!            
                    
                Спасибо, друг, из 2019-го :)            
                    
                из 2020-го ))))            
                    
                У нас андройды в 2049 пытаются добится равноправия. Так что тоже спасибо.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.