плагин для обработки события в xparser

есть такой пакет вредный xparser
есть к нему примеры плагинов, например такой

$sp = &$scriptProperties;
switch ($modx->event->name) {
    case 'xParserOnBeforeTaskActions':
        foreach ($sp['rows'] as &$row) {
            $resource = &$row['Resource'];
            // Если код ответа 301, 302, 404
            if (in_array($row['Request']['http_code'], array(301, 302, 404))) {
                $resource['published'] = 0; // присвоим ресурсу published = 0
            }
        }
        unset($resource, $row);
        $modx->event->returnedValues = $sp; // передаём измененённые значения обратно
        break;
}
и он просто подвешивает парсинг

но суть не в этом, нужно сделать так чтобы он проводил проверку на пустые поля контента и одного tv поля и после отменял публикацию

чтото типа
if(empty($resource->get('content')) && empty($resource->getTVValue('video')){
            $resource->set('published', 0);
        }
может кто понимает в чем дело?
Евгений
04 декабря 2021, 12:23
modx.pro
443
0

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

Евгений
04 декабря 2021, 13:24
0
сделал так не срабатывает

<?php

$sp = &$scriptProperties;
switch ($modx->event->name) {
    case 'xParserOnBeforeTaskActions':
        foreach ($sp['rows'] as &$row) {
            $resource = &$row['Resource'];
            // Если код ответа 301, 302, 404
            if (in_array($row['Request']['http_code'], array(301, 302, 404))) {
                $resource['published'] = 0; // присвоим ресурсу published = 0
            }
            if(empty($resource->get('content'))) {
                if(empty($resource->getTVValue('video'))) {
                         $resource->set('published', 0);
            }
            }
        }
        unset($resource, $row);
        $modx->event->returnedValues = $sp; // передаём измененённые значения обратно
        break;
}
    Роман
    07 декабря 2021, 10:31
    0
    Может проверять, на то что сохраняет он или нет:
    if ($resource->save() == false) {
       echo 'Oh no, the resource failed to save!';
    }
    Проверь получает ли он значения $resource->get('content') и $resource->getTVValue('video').
    $modx->log(1, $resource->get('content'));
    $modx->log(1, $resource->getTVValue('video'));
      Евгений
      07 декабря 2021, 17:52
      0
      на большинство ресурсов он конечно получает контент

      для чего проверять сохраняемость?
        Роман
        07 декабря 2021, 18:11
        0
        Если сохраняет, вопросов нет.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4