The author
44 170
Usually answers within a few days
Автор дополнения
44 170
Usually answers within a few days
Version 1.11.20-beta
Release date 08.17.2023
Downloads 705
Views 4 460
Warning! This component requires PHP version 7.0 or higher! If your site uses PHP less than required, the installation of this package could break it.
Warning! This package requires MODX not less than 2.3 !
When adding tape fields that need to be parsed, instead of the field title (title or enclosure[url]) you can specify the @INLINE chunk to be processed by Fenom. Thanks to this, it is possible to build absolutely any logic in these fields, up to the creation of new sections «on the move».

More about the work

The task was to simplify the interaction with the component as much as possible.

Add a task

Go to the component page, click Add Task => Add RSS Feed.
On the Basic tab, fill in something like this:

Switch to the Configuration tab, where you can specify:
  • the template for created resources,
  • the context,
  • the parent container within the selected context,
  • you can configure the download of media content,
  • if necessary, to change the base tape tag and the base record tag.

The media content extensions and folders for saving each of the extensions are specified in JSON.

Click Save — the task has been added.

Add fields for parsing

On the newly added task, we right-click and select task fields:

A list of the tasks fields is opened, and it is still empty.

In addition to adding a task, we can view the feed values array — this is a printed array with the data from the first tape entry:

Remember the fields names that we need to parse on the site and click Add field. A window opens with the option to specify:

  1. The System field. A drop-down list of system resource fields and TV fields.
  2. The Source field. The text field, in which you need to enter the tag name in the RSS-feed.
    You can specify @INLINE chunk to be processed by Fenom from pdoTools. The chunk contains placeholders of all possible fields from the RSS-feed, which are in the record between the tags item, as well as an array with the tasks settings $_task.
    Due to the introduction of Fenom into this field, it will be possible to make a selection from the category (for example in RSS on the resource base, in search of an ID of a similar category on our site, and if not found, to add.
  3. The enclosure tag and the like are either specified via the chunk: «@INLINE {$enclosure['url']}», or as a CSS selector: «enclosure[url]».If not specified, or the value for this field in the tape is empty, then the value for theSystem field will be taken from the next field — Default value.
  4. The default value. In this field, you can specify the value that will be recorded in the System field. For example, if we chose class_key in the System field then in order to create Tickets, we write «Ticket» in the Default value field, and leave a blank in the Source Field.
    The same «magic» can be done with the field published, indicating the default «1». Then the resource on the site will be added immediately published.

In addition to the basic fields with data that need to be uploaded to the site, we also need to add a field according to which the package will understand that this entry is already on the site. To do this, add a new field, leave the System field empty, and in the Source Fieldsource write, for example, «guid» (because it is the least subject to change). It must be something like this:

Save. In the fields list on this field we put the indicator Unique field (button with a star on the left):

Everything is ready for parsing, both one-time and one-minute (the component has a script to run quests from the CRON)

Thread in MODX.PRO community.

1.11.20-beta (17.08.2023)

  • Добавлено удаление сессии открытой скриптом socket_resource.php

1.11.19-beta (21.07.2023)

  • Добавлена возможность указать в задании очистки галереи перед обновлением ресурса

1.11.18-beta (13.07.2023)

  • Исправлена ошибка Argument 1 passed to xpTools::prepareHeaders() must be of the type array, null given

1.11.17-beta (06.06.2023)

  • Добавлена возможность указать в задании не передавать заголовки при запросе к медиа

1.11.16-beta (23.11.2022)

  • Добавлена дополнительная попытка скачивания нескачанных картинок в методах xpParser::grabMediaWithExtension и xpParser::grabMediaWithoutExtension

1.11.15-beta (14.03.2022)

  • Исправлена работа на версиях MODX 2.8.0 и выше

1.11.14-beta (30.11.2021)

  • Заменён User agent на Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 YaBrowser/ Yowser/2.5 Safari/537.36

1.11.13-beta (07.11.2021)

  • Добавлены дополнительные этапы в логирование при запуске из терминала
  • Переписана работа с демоном для подзаданий, чтобы жрало меньше оперативки

1.11.12-beta (05.11.2021)

  • Исправлена ошибка с infinity числом во время получения необработанных данных подзадания

1.11.11-beta (04.11.2021)

  • Добавлена поддержка кастомных ключей для полей

1.11.10-beta (03.11.2021)

  • Добавлена ручная сортировка полей задания
  • Добавлена возможность тестировать значения для выключенных полей
  • Поправлено формирование списка элементов в JSON задании для подзадачи, в методе xpParser::getSourceItems

1.11.9-beta (30.05.2021)

  • Добавлено сохранение старого списка categories обновляемого товара msProduct
  • Поправлено присвоение свойства categories для msProduct

1.11.8-beta2 (30.05.2021)

  • Исправлено событие xParserOnTaskRowsPrepared в списке событий компонента

1.11.8-beta (30.05.2021)

  • Добавлено свойство categories для msProduct, при включённой опции "Дозапись"
  • Добавлено событие плагина xParserOnTaskRowsPrepared с параметрами: xParser $xp, xpParser $parser, array $task, array $rows

1.11.7-pl2 (08.05.2021)

  • Исправлен warning "Cannot use a scalar value as an array"

1.11.7-pl (08.05.2021)

  • Исправлен warning "Parameter must be an array or an object that implements Countable"
  • Исправлен warning "Invalid argument supplied for foreach"
  • Исправлен warning "array_merge(): Expected parameter 2 to be an array"

1.11.6-pl (02.05.2021)

  • Исправлена проблема при парсинге пустых данных XML и JSON подзаданий

1.11.6-beta (02.05.2021)

  • Исправлена проблема при парсинге пустых данных XML и JSON подзаданий

1.11.5-pl (02.05.2021)

  • Исправлена проблема с проверочным запуском конкретного поля при заполненном поле "Исключённые страницы"

1.11.5-beta (01.05.2021)

  • Исправлен баг, когда возвращалось только первое вхождение результата при пустом "Базовом теге" задания

1.11.4-beta (01.05.2021)

  • Добавлена возможность указать подзадаче заголовки

1.11.3-beta (01.05.2021)

  • Добавлена возможность любому полю задания указать флаг "Уникальное" или "Ссылка", кроме поля-галереи

1.11.2-beta (01.05.2021)

  • Добавлены наименования заданий в заголовки связанных с ним окон
  • Убрана подложка-затемнение у окон там, где это возможно

1.11.1-beta (30.04.2021)

  • Исправлена проблема с проверочным запуском при заполненном поле "Исключённые страницы"

1.11.0-beta (30.04.2021)

  • Добавлены заголовки запроса для основного задания
  • Добавлена передача заголовков запроса в демон
  • Добавлена возможность указать несколько подзаданий у основного задания

1.10.3-beta (23.03.2021)

  • В @INLINE-чанк при обработке полей задания добавлен массив $_parsed, где доступны все ранее обработанные значения полей, в том числе и основного задания, если в текущий момент обрабатываются поля подзадания
  • Исправлено определение начальной страницы пагинации в методе xpParser::parseTask

1.10.2-beta2 (22.03.2021)

  • Исправлена проблема с отображением подзаданий

1.10.2-beta (22.03.2021)

  • Добавлена возможность у JSON задания оставить поле "Базовый тег записей" пустым, тогда будет взят весь массив

1.10.1-beta (22.03.2021)

  • Добавлена возможность поиска ТВ-поля в списке полей, как "tv2", "tv|2", "key"

1.10.0-beta2 (19.03.2021)

  • Поправлено обновление со старой версии

1.10.0-beta (19.03.2021)

  • Добавлена пагинация для RSS/XML заданий
  • Добавлен новый способ пагинации
  • Добавлена возможность сначала собрать все данные со всех страниц, а потом перейти к действиям над ресурсами
  • Добавлена возможность использовать основной УРЛ задания для первой страницы пагинации
  • Добавлена возможность при запуске задания автоматически очищать список пройденных страниц пагинации
  • Исправлено дублирование сообщения о завершении парсинга при включённой пагинации
  • Исправлена проблема с перезаписью полей ресурса у основного задания значениями дочернего
  • Исправлена проверка JSON строки
  • Рефакторинг кода

1.9.0-beta (02.03.2021)

  • Добавлена поддержка JSON лент
  • Добавлена группировка заданий
  • Добавлена явная поддержка XML лент в лексиконы

1.8.17-beta (08.02.2021)

  • Добавлено синхронное скачивание изображений перед загрузкой их в процессор miniShop2/ms2Gallery

1.8.16-beta (23.12.2020)

  • Добавлены отсутствующие переводы на английский

1.8.15-beta (28.08.2020)

  • Добавлено событие плагина xParserOnTaskParseDone с параметрами: xParser $xp, xpParser $parser, array $task, array $stats

1.8.14-beta (05.07.2020)

  • Добавлено свойство minishop2|categories в список системных полей

1.8.13-beta (05.07.2020)

  • Добавлена проверка JSON строки в метод xpParser::sanitizeContent

1.8.12-beta (05.07.2020)

  • Добавлено событие плагина xParserOnFilterSourceItems с параметрами: xParser $xp, xpParser $parser, array $task, array $items

1.8.11-beta (26.06.2020)

  • Исправлен вызов события плагина xParserOnBeforeTaskParse
  • Исправлена проверка заполнения шаблона при сохранении задания

1.8.10-beta (03.02.2020)

  • Добавлена системная настройка xparser_socket_script_resource для указания URI скрипта для действий с ресурсами
  • Исправлен путь скрипта для действий с ресурсами в assets/components/xparser

1.8.9-beta2 (26.12.2019)

  • Исправлено формирование пути к файлу без расширения, если тот существует

1.8.9-beta (23.12.2019)

  • Добавлена проверка на существование для изображений без расширения

1.8.8-beta (11.12.2019)

  • Добавлена опция в задание: "Добавлять новые записи"
  • Добавлена опция в задание: "Дозаписывать данными из существующих записей"

1.8.7-beta2 (09.12.2019)

  • Поправлены лексиконы для системных настроек

1.8.7-beta (09.12.2019)

  • Добавлены настройки для демона: xparser_socket_url, xparser_socket_token, xparser_socket_count_resources

1.8.6-beta (09.12.2019)

  • Исправлена проверка на уникальность при парсинге

1.8.5-beta2 (30.11.2019)

  • Поправлено взаимодействие с xParserDaemon

1.8.5-beta (04.11.2019)

  • Добавлен статус демона в topbar списка заданий

1.8.4-pl (30.10.2019)

  • Поправлена работа с xParserDaemon

1.8.4-beta (24.10.2019)

  • Добавлена системная настройка xparser_rewrite_exists_images
  • Добавлен проброс действий с изображениями без расширения в xParserDaemon

1.8.3-pl (21.10.2019)

  • Исправлена подстановка путей к картинкам, если все изображения при парсинге имеются на сайте

1.8.3-beta (21.10.2019)

  • Добавлено дополнительное логирование
  • Добавлена возможность спарсить все записи в ленте, просто указав "0" в поле "Кол-во" у задания

1.8.2-beta (17.10.2019)

  • Добавлено засыпание на 20 секунд каждые 100 записей/картинок при получении оных через xParserDaemon
  • Поправлено формирование схемы УРЛ в xpDaemon::setResources

1.8.1-beta (17.10.2019)

  • Добавлен прогресс бар и частичное логирование действий в крон скрипт
  • Добавлен проброс действий с ресурсами в xParserDaemon

1.8.0-pl (16.10.2019)

  • Поправлено затирание дублированных изображений

1.8.0-beta2 (16.10.2019)

  • Поправлена проверка ключа записи при скачивании изображений

1.8.0-beta (16.10.2019)

  • Добавлена работа с NodeJS демоном xParserDaemon
  • Поправлено экранирование квадратных скобок при просмотре результатов полей
  • Поправлено скачивание изображений без расширения в синхронном режиме

1.7.3-beta (27.09.2019)

  • Добавлено свойство _reloadContext при запуске процессора на создание ресурса

1.7.2-pl2 (21.09.2019)

  • Поправлена проверка ссылки с пагинацией

1.7.2-pl (21.09.2019)

  • Поправлен вывод при проверке данных в поле
  • Поправлено формирование ссылки со страницей с номером 0

1.7.2-beta (13.09.2019)

  • Добавлено поле User Agent для заданий

1.7.1-pl (01.07.2019)

  • Добавлена английская версия
  • Поправлена передача УРЛ с номером страницы

1.7.0-pl (20.06.2019)

  • Поправлена сортировка полей задания

1.7.0-beta (20.06.2019)

  • Добавлена асинхронная загрузка источников подзаданий
  • Добавлена возможность скачивания изображения без расширения для конкретных полей задания
  • Добавлена возможность поиска по названию в списке полей задания
  • Поправлено получение используемой памяти скриптом при парсинге в виде пикового значения
  • Поправлена максимальная высота модального окна на страницах компонента
  • Поправлен внешний вид отображения таблицы заданий, стал более компактнее
  • Удалён устаревший QueryPath
  • Рефакторинг кода

1.6.10-pl (31.05.2019)

  • Поправлено указание опции асинхронности при создании задания

1.6.10-beta (31.05.2019)

  • Добавлена опция включения асинхронного скачивания файлов для заданий
  • Поправлено удаление временного файла

1.6.9-beta (26.04.2019)

  • Поправлена совместимость с MySQL 5.7

1.6.8-beta (29.12.2018)

  • Поправлен срез только первого значения для подзаданий
  • Поправлена регулярка нахождения УРЛов изображений

1.6.7-beta3 (06.12.2018)

  • Поправлен парсинг URL подзаданий с подстрокой "&"

1.6.7-beta2 (23.11.2018)

  • Поправлена совместимость с PHP 5.4 в xpParser

1.6.7-beta (10.10.2018)

  • Понижена версия evenement/evenement до ^2.0 для работы с PHP 5.4

1.6.6-beta (10.10.2018)

  • Добавлено подробное описание ошибки в логах при некорректном создании/обновлении ресурса
  • Поправлено формирование УРЛ при кривой передаче УРЛа источником при редиректе

1.6.5-beta2 (06.10.2018)

  • Поправлена передача кодировки в DomCrawler

1.6.5-beta (05.10.2018)

  • Поправлено определение кодировки с DomCrawler

1.6.4-beta (03.10.2018)

  • Добавлена настройка xparser_combo_fields_resource_exclude, в которой указываются поля ресурса для исключения из ComboBox "Системное поле"
  • Добавлена настройка xparser_combo_fields_minishop2_exclude, в которой указываются поля товара ms2 для исключения из ComboBox "Системное поле"
  • Поправлен метод проверки JSON строки

1.6.3-beta (13.06.2018)

  • Добавлено событие плагина xParserOnTaskItemParse с параметрами: xParser $xp, xpParser $parser, array $task, string $item, array $row
  • Добавлено событие плагина xParserOnBeforeTaskActions с параметрами: xParser $xp, xpParser $parser, array $task, array $rows
  • Переписан метод запроса к УРЛ, добавлено запоминание кода ответа сервера при первом обращении (без учёта редиректов)
  • Исправлен вызов события плагина xParserOnBeforeTaskParse
  • Исправлено затирание УРЛа в основной задаче при обращении к подзадаче

1.6.2-beta (13.06.2018)

  • Добавлено событие плагина xParserOnBeforeTaskParse с параметрами: xParser $xp, xpParser $parser, array $task, array $items, array $fields

1.6.1-beta (04.04.2018)

  • Добавлена возможность указывать miniShop2 свойства в качестве уникальных значений

1.6.0-beta2 (04.04.2018)

  • Исправлена 500 ошибка при некорректном синтаксисе xPath и CSS

1.6.0-beta (31.03.2018)

  • Добавлена библиотека ReactPHP для асинхронной загрузки изображений
  • Добавлена библиотека DomCrawler в качестве замены QueryPath

1.5.3-beta (03.03.2018)

  • Добавлена возможность указать обязательное заполнение для поля задания

1.5.2-beta2 (12.02.2018)

  • Исправлена ошибка шифрования соединения при запросе к некоторым сайтам на SSL

1.5.2-beta (11.12.2017)

  • Улучшена логика поиска базового тега ленты/записи в RSS задании

1.5.1-beta3 (26.11.2017)

  • Исправлена ошибка подгрузки данных в RSS задании

1.5.1-beta2 (17.11.2017)

  • Исправлен косяк с проставлением media_source у ресурсов для компонента ms2Gallery

1.5.1-beta (16.11.2017)

  • Добавлена настройка cron_username, для авторизация в пользователя при запуске cron скрипта
  • Исправлена ошибка "permission_denied" при запуске крон скрипта

1.5.0-beta (31.10.2017)

  • Добавлена поддержка miniShop2 свойств/опций
  • Добавлена поддержка miniShop2 галереи
  • Добавлена поддержка ms2Gallery
  • Добавлена возможность обновления записей
  • Добавлена возможность раскодировать JSON у полей задания (требуется для некоторых свойств ms2: size, tags и т.п.)
  • Добавлена подсветка Fenom синтаксиса в Ace у полей задания
  • Рефакторинг класса xpParser

1.4.1-beta (11.10.2017)

  • Добавлена пагинация и поиск по подстроке в поле Системное поле

1.4.0-beta2 (04.08.2017)

  • Поправлена проверка на уникальность по хешу

1.4.0-beta (02.08.2017)

  • Добавлена поддержка пагинации на доноре

1.3.0-beta3 (02.08.2017)

  • Добавлена передача языка клиента (ru-RU) в заголовках при обращении к источнику

1.3.0-beta2 (10.02.2017)

  • Восстановлена совместимость с PHP 5.3

1.3.0-beta (10.02.2017)

  • Добавлен выбор синтаксиса в конфигурации HTML задания
  • Добавлен синтаксис регулярных выражений
  • Исправлено некорректное получение списка всех заданий при парсинге кроном: теперь подзадания исключаются

1.2.4-beta (05.02.2017)

  • Добавлена возможность указать скачивание медиа для конкретного поля задания
  • Исправлена некорректная подстановка схемы УРЛ для сторонних УРЛов вида //

1.2.3-beta (01.02.2017)

  • Добавлен массив $_pls в параметры @INLINE чанка в системном поле, которая содержит массив значений, для получения нестандартных полей, например с двоеточием в ключе
  • Переписан метод xmlToArray на основе DOMDocument
  • Исправлен баг некорректного получения поля из XML с двоеточием в ключе
  • Исправлен баг с одновременным получением атрибутов и контента поля из XML

1.2.2-beta (19.01.2017)

  • Добавлена возможность указания кодировки страницы-источника

1.2.1-beta (17.01.2017)

  • Исправлен баг в подзадачах с переключением контекста на пустой
  • Исправлен баг в подзадачах с выборкой среза элементов массива

1.2.0-beta (15.01.2017)

  • Добавлена возможность совмещения заданий (запуск одного задания из другого)

1.1.2-beta (06.01.2017)

  • Исправлен баг с некорректным проставлением свойства "Показывать в дереве" у Тикетов
  • Добавлены системные поля: isfolder, show_in_tree, uri, uri_override

1.1.1-beta (05.01.2017)

  • Исправлен некорректный слив картинок с запятой и с кириллицей в УРЛе
  • Исправлен баг с записью уникального хеша ресурса в properties, если это ресурс Tickets
  • Исправлен баг с сохранением ТВ в ресурс Tickets
  • Исправлен баг HTML заданий, когда данные источника не клонировались

1.1.0-beta (28.12.2016)

  • Добавлен парсер HTML контента
  • Добавлено поле "От" и "Кол-во" для заданий
  • Переписаны процессоры добавления/обновления заданий
  • Переписаны грида/окна заданий на ExtJS
  • Переписан принцип связи объекта xpTask с субобъектами (xpTaskRss|xpTaskHtml)
  • Исправлен баг при парсинге RSS, когда в ленте есть только 1 запись
  • Рефакторинг кода класса xpParser

1.0.3-beta2 (02.12.2016)

  • Исправлена ошибка с длинным индексом поля url у объекта xpTaskRss

1.0.3-beta (02.12.2016)

  • В процессор mgr/task/parse добавлена логика для использования процессора из компонента Scheduler
  • Скрипт cron/parser.php переписан в соответствии с новой логикой процессора mgr/task/parse
  • В комплект добавлена библиотека mtdowling/cron-expression для обработки Cron синтаксиса в параметре "cron" при запуске процессора mgr/task/parse из компонента Scheduler
  • Исправлена ошибка добавления ресурса в отличный от web контекст, при запуске скрипта из консоли

1.0.2-beta2 (21.11.2016)

  • Исправлена ошибка перезаписи всего контента поля, если в нём найдена ссылка на медиа-контент и включён параметр "Скачивать медиа-контент"

1.0.2-beta (21.11.2016)

  • В параметры @INLINE чанка в системном поле добавлен параметр $_task с массивом задания
  • Исправлена ошибка переназначения parent и template, когда они указаны в виде поля задания
  • Исправлена ошибка присвоения ресурсу уникального хеша на основе выбранного поля в задании

1.0.1-beta (17.11.2016)

  • Добавлена возможность указать уникальное поле задания, по которому будет проверяться существование ресурса в базе

1.0.0-beta (14.11.2016)

  • Start