Перегенерация URI из консоли
Убрал вложенность ЧПУ в настройках и после часть статей обновилась, а где-то половина осталась с вложенным (в базе 27000 статей и 30 рубрик). Кнопка перегенерации URI (Управление -Очистить Кеш — Обновление URI) не помогает. Есть ли скрипт запуска из консоли?
Комментарии: 3
Ну, что-то в духе:
+если ресурсов много, то лучше делать все это пошагово.
++не забывайте о бэкапах.
$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 "Ошибка";
}
+если ресурсов много, то лучше делать все это пошагово.
++не забывайте о бэкапах.
Спасибо!
$resource->set('alias', ''); //удаляем старые алиасы
а вот после этой строчки не будет ли генерироваться новые алиасы? мне новые не нужны, т.к. сайт переносился с wordpress и надо сохранить старые ссылки, нужно только вложенность убрать.
Да, в таком варианте будут генерироваться новые алиасы методом, выбранным в системных настройках.
Если нужно убрать вложенность по какому-либо принципу, который можно систематизировать, то вы можете вначале получить алиас для каждого ресурса, обработать, а уже после занести и сохранить (тогда автогенерация не произойдет).
Если нужно убрать вложенность по какому-либо принципу, который можно систематизировать, то вы можете вначале получить алиас для каждого ресурса, обработать, а уже после занести и сохранить (тогда автогенерация не произойдет).
//...
$alias = $resource->get('alias')
//махинации с $alias
$resource->set('alias', $alias);
//...
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.