Василий Stepanov

Василий Stepanov

Был в сети 20 августа 2022, 18:07
Заказы не принимаю
При создании ресурса вы забыли в массиве указать class_key:
'class_key' => 'msProduct'
Попробуй так:
$response = $modx->runProcessor('resource/create', array(
'class_key' => 'msProduct',
'pagetitle' => 'Заголовок',
'longtitle' => '',
'description' => '',
'introtext' => '',
'content' => 'Содержимое тестовой страницы',
'alias' => '',
'template' => 5,
'published' => 1,
'parent' => '19'    // укажи свою категорию
));
if ($response->isError()) {
return $modx->error->failure($response->getMessage());
}

$newResource = $response->response['object'];
P.S.: без знаков препинания ваш вопрос очень сложно понять
Сделал вот так. Работает.
//собираем заголовки из категории ресурсов
$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;
    }
}
Согласен, отличный мощный компонент для реализации сильных проектов. В моем случае стоит задача спарсить лишь одну ленту с десятью новостями и создать ресурсы, задача на первый взгляд простая и есть инетерес написать сниппет самим.
Добрый вечер. Вывожу количество комментариев на сайте через сниппет countComments:
$sql = "SELECT COUNT(id) AS count FROM modx_tickets_comments;";
$query = new xPDOCriteria($modx, $sql);

if ($query->prepare() && $query->stmt->execute()){
    $res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
}

foreach ($res as $row) {
        //$total = $row[1];
        //print_r($row);
        print_r($res[0]['count']);
}
И вывожу в нужном месте:
[[!countComments?]]
Все работает, но может можно сделать проще?