Парсинг RSS и создание новых ресурсов
        Написал сниппет для парсинга RSS-ленты местного новостного сайта с созданием ресурсов. Сделал проверку по дате публикации, чтобы существующий ресурс в базе MODX не создавался снова, но проблема в том, что создается только один ресурс с последней новостью из RSS, а при появлении новой новости в RSS новый ресурс в базе MODX не создается. Помогите, пожалуйста, найти ошибку.
Код:
     
    
    
                                                        Код:
$path = 'http://www.amur.info/index.rss';
$ctx = stream_context_create(array('http' => array('timeout' => 6)));
$file = file_get_contents($path, 0, $ctx);
if ($file) {
    $rss = simplexml_load_string($file);
    $i = 0;
    foreach ($rss->channel->item as $item){
        $namespaces = $item->getNameSpaces(true);
        $yandex = $item->children($namespaces['yandex']); 
        
        $full_text = (string)$yandex->{'full-text'};       //полный текст статьи
        $title = $item->title;                             //заголовок статьи
        $pubdate = $item->pubDate;                         //дата публикации
        $link = $item->link;                               //ссылка на новость
        
        echo '<b>'. $title. '</b></br>';
     	
	//проверка
        $docfind = $modx->getObject('modResource',array('parent' => '19','longtitle' => $pubdate));            
        if($docfind) {
		echo '<i>Документ с такой датой публикации уже есть </i></br>';
        }
        else {
	    //создаем ресурсы
            $response = $modx->runProcessor('resource/create', array(
           	'pagetitle' => $title,
            	'longtitle' => $pubdate,
            	'description' => $link,
            	'introtext' => '',
            	'content' => $full_text,
            	'template' => $template,
            	'hidemenu' => 1,
            	'published' => 1,
            	'parent' => '19'
            ));
        }
        $i++;
        if ($i == 3) break;
    }
}
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 4
                На вскидку:
                    if($docfind instanceof modResource) {
		continue;
        }            
                А этот modstore.pro/packages/import-and-export/xparser не подходит потому что платный? 
Он очень продуманный, удобный, все есть- крон и т.п. Создает обычные ресурсы или тикеты.
                    Он очень продуманный, удобный, все есть- крон и т.п. Создает обычные ресурсы или тикеты.
                Согласен, отличный мощный компонент для реализации сильных проектов. В моем случае стоит задача спарсить лишь одну ленту с десятью новостями и создать ресурсы, задача на первый взгляд простая и есть инетерес написать сниппет самим.            
                    
                Сделал вот так. Работает.
                    //собираем заголовки из категории ресурсов
$docfind = $modx->getCollection('modResource',array('parent' => '19'));
foreach ($docfind as $k => $res) {
    $title_m = $res->get('pagetitle');
    $titles[] = $title_m;
}
$path = 'http://www.amur.info/index.rss';
$ctx = stream_context_create(array('http' => array('timeout' => 6)));
$file = file_get_contents($path, 0, $ctx);
if ($file) {
    $rss = simplexml_load_string($file);
    $i = 0;
    foreach ($rss->channel->item as $item){
        $namespaces = $item->getNameSpaces(true);
        $yandex = $item->children($namespaces['yandex']); 
        
        $full_text = (string)$yandex->{'full-text'};       //полный текст статьи
        $title = $item->title;                             //заголовок статьи
        $pubdate = $item->pubDate;                         //дата публикации
        $link = $item->link;                               //ссылка на новость
        
	//создаем ресурсы в MODX, если ресурсов с такими заголовками еще нет
        if (in_array($title, $titles) == false) {
            $response = $modx->runProcessor('resource/create', array(
                'pagetitle' => $title,
                'longtitle' => $pubdate,
                'description' => $link,
                'introtext' => '',
                'content' => $full,
                'template' => $template,
            	'hidemenu' => 1,
            	'published' => 1,
            	'parent' => '19'
            ));
        }
        
        $i++;
        if ($i == 5) break;
    }
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.