Skip to content
  1. Компоненты
  2. xParser
  3. События плагинов
  4. Примеры

Примеры

1) Исключим некоторые записи из парсинга

Работаем с версии 1.8.11 и выше.

php
$sp = &$scriptProperties;
switch ($modx->event->name) {
  case 'xParserOnBeforeTaskParse':
    // Только для задания с id 73 и 74
    if (!in_array((int)$task['id'], [73, 74], true)) {
      break;
    }

    // Переформируем записи
    $items = [];
    foreach ($sp['items'] as $item) {
      // Если в поле источника title найдено вхождение "онлайн-экскурс" то исключить статью из парсинга
      if (preg_match('~(онлайн[-– ]экскурс)~usi', $item['title'])) {
        continue;
      }
      $items[] = $item;
    }
    $modx->event->returnedValues['items'] = $items;
    break;
}

2) Остановим парсер, ничего при этом не добавив

php
switch ($modx->event->name) {
  case 'xParserOnBeforeTaskActions':
    $modx->event->output('Не хочу это парсить!');
    break;
}

3) Отключим публикацию ресурса, если код ответа сервера был 301, 302, 404

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
      }
    }
    unset($resource, $row);
    $modx->event->returnedValues = $sp; // передаём измененные значения обратно
    break;
}