Создание страницы через процессоры
Подскажите, как решить проблему:
Второй цикл — берет pagetitle из массива
При вызове сниппета, не до конца создались страницы, теперь необходимо сверить pagetitle если уже существует не создавать страницу, если нет такого — создать. Загводка в том, что парсится в двух местах и необходимо сравнить при каждой итерации я так понимаю.
В текущем варианте сниппета — работа прекращается при первом выполнении. Тоесть первый цикл выводит все существущие pagetitle в разделе, а второй выводит pagetitle только 1 раз.
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 раз.
Комментарии: 2
Понял, что getCollection не массив. Проблема решена.
Решение:
2. Парсим их и pagetitle заносим в массив $exist_pagetitles
3. Сравниваем два массива на различия -> получаем массив с pagetitle страниц которых нет
4. Парсим полученный массив -> каждый $pagetitle присваиваем $res['pagetitle']
5. Создаем ресурс c нужным pagetitle
$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. Получаем объекты всех страниц с родителем $parentId2. Парсим их и pagetitle заносим в массив $exist_pagetitles
3. Сравниваем два массива на различия -> получаем массив с pagetitle страниц которых нет
4. Парсим полученный массив -> каждый $pagetitle присваиваем $res['pagetitle']
5. Создаем ресурс c нужным pagetitle
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.