Создание страницы через процессоры

Подскажите, как решить проблему:
1.
$arr = $modx->getCollection('modResource', array(
          'parent' => $parent
        ));
        foreach($arr as $v){
            echo '<div class="alert alert-warning">'.$v->pagetitle.'</div>';
        }
2.
foreach($pagetitles as $pagetitle){
            echo '<div class="alert alert-success">'.$pagetitle.'</div>';
            if($pagetitle != $v->pagetitle){
            $i++;
            $res['pagetitle'] = $pagetitle;
            $response = $modx->runProcessor('resource/create', $res);
    
            if ($response->isError()) {
                    return $modx->error->failure($response->getMessage());
            }
            $id = $response->response['object']['id'];
            
            echo '<div class="alert alert-sucess">Страница <b>'.$pagetitle.'</b> успешно создана.</div><br />';
            } else {
            echo '<div class="alert alert-error">Страница <b>'.$pagetitle.'</b> уже существует.</div><br />';
            }
          }
Первый цикл — выводит pagetitle существующих страниц в разделе
Второй цикл — берет pagetitle из массива
При вызове сниппета, не до конца создались страницы, теперь необходимо сверить pagetitle если уже существует не создавать страницу, если нет такого — создать. Загводка в том, что парсится в двух местах и необходимо сравнить при каждой итерации я так понимаю.
В текущем варианте сниппета — работа прекращается при первом выполнении. Тоесть первый цикл выводит все существущие pagetitle в разделе, а второй выводит pagetitle только 1 раз.
Denys Butenko
22 декабря 2012, 18:27
modx.pro
888
0

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

Denys Butenko
23 декабря 2012, 15:11
0
Понял, что getCollection не массив. Проблема решена.
    Denys Butenko
    23 декабря 2012, 17:02
    0
    Решение:
    $childs = $modx->getCollection('modResource', array("parent" => $parentId));
    foreach($childs as $child) {
      $exist_pagetitles[] = $child->get('pagetitle');
    }
    $output = array_diff($pagetitles,$exist_pagetitles);
    foreach($output as $pagetitle){
      $i++;
      $res['pagetitle'] = $pagetitle;
      $response = $modx->runProcessor('resource/create', $res);
    
      if ($response->isError()) {
        return $modx->error->failure($response->getMessage());
      }
      $id = $response->response['object']['id'];
      echo '<div class="alert alert-success">Страница '.$pagetitle.' успешно создан.</div>';
    }
    1. Получаем объекты всех страниц с родителем $parentId
    2. Парсим их и pagetitle заносим в массив $exist_pagetitles
    3. Сравниваем два массива на различия -> получаем массив с pagetitle страниц которых нет
    4. Парсим полученный массив -> каждый $pagetitle присваиваем $res['pagetitle']
    5. Создаем ресурс c нужным pagetitle
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2