Перегенерация URI из консоли

Убрал вложенность ЧПУ в настройках и после часть статей обновилась, а где-то половина осталась с вложенным (в базе 27000 статей и 30 рубрик). Кнопка перегенерации URI (Управление -Очистить Кеш — Обновление URI) не помогает. Есть ли скрипт запуска из консоли?
Антон Левиц
09 февраля 2016, 21:37
modx.pro
3 574
0

Комментарии: 3

Максим Кузнецов
10 февраля 2016, 11:00
1
0
Ну, что-то в духе:
$query = $modx->newQuery('modResource', array('template' => 2)); //ограничить выборку по вкусу
$query-> limit(0);

if ($resources = $modx->getCollection('modResource', $query)) {
	foreach ($resources as $resource) {
    		$resource->set('alias', ''); //удаляем старые алиасы
		$resource->save();

		print "Ресурс . $resource->get('id') . обновлен.";
	}
}
else {
	print "Ошибка";
}

+если ресурсов много, то лучше делать все это пошагово.

++не забывайте о бэкапах.
    Антон Левиц
    Антон Левиц
    10 февраля 2016, 11:20
    0
    Спасибо!

    $resource->set('alias', ''); //удаляем старые алиасы
    а вот после этой строчки не будет ли генерироваться новые алиасы? мне новые не нужны, т.к. сайт переносился с wordpress и надо сохранить старые ссылки, нужно только вложенность убрать.
      Максим Кузнецов
      10 февраля 2016, 12:04
      0
      Да, в таком варианте будут генерироваться новые алиасы методом, выбранным в системных настройках.

      Если нужно убрать вложенность по какому-либо принципу, который можно систематизировать, то вы можете вначале получить алиас для каждого ресурса, обработать, а уже после занести и сохранить (тогда автогенерация не произойдет).

      //...
      
      $alias = $resource->get('alias')
      //махинации с $alias
      $resource->set('alias', $alias);
      
      //...
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3