К содержанию

Как пересохранить ресурсы через Console

Добрый день!
Помогите, пожалуйста, в написании кода для выполнения через Console, так как сам плохо разбираюсь в php.
Есть раздел Tickets, в котором несколько сотен тикетов. У каждого тикета не сформирован alias (не спрашивайте, почему так получилось). Чтобы сформировать чпу alias, приходится каждый тикет сохранять вручную, что занимает длительное время.
Есть ли способ это автоматизировать?
Пробовал сделать так:
<?php
if(!$docs = $modx->getCollection('Ticket', array(
    'parent' => 1212
    
))){return;}

foreach($docs as $doc){
    $content = $doc->get('content');
    $doc->save();
}
но ничего не получилось.
Помогите дописать пару строк, чтобы автоматически формировались alias.
Спасибо!
Сергей
Сергей
18 февраля 2019, 12:44
modx.pro
2 239
Реклама

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

Андрей
Андрей Старожил
18 февраля 2019, 13:09
Попробуй так:
<?php
$pages = $modx->getIterator('modResource', ['parent:IN' => [1212]]);

foreach ($pages as $p) {
  $title = $p->get('pagetitle');
  $alias = $p->get('alias');	
  $alias = $p->cleanAlias($title);
  $p->set('alias', $alias);
  $p->save();
}
    Сергей
    Сергей Старожил
    18 февраля 2019, 13:11
    Все получилось!
    ООООгромнейшее СПАСИБО!
      Сергей
      Сергей Старожил
      18 февраля 2019, 13:38
      А это будет работать на 9000 ресурсах?
        Андрей
        Андрей Старожил
        18 февраля 2019, 13:47
        По идее должно) пробовал на ~5000-7000, всё работало.
          Сергей
          Сергей Старожил
          18 февраля 2019, 13:49
          ок. спасибо!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5