Автор дополнения
Павел
Пакетов
18
Закачек
5 650
Автор дополнения
Пакетов
18
Закачек
5 650
Версия 1.4.1-beta
Дата выпуска 11.10.2017
Загрузки 93
Просмотры 1 287
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
При добавлении полей ленты, которые надо парсить, вместо названия поля (title или enclosure[url]) можно указать @INLINE чанк, который будет обработан Fenom. Благодаря этому, в этих полях можно выстраивать совершенно любую логику, вплоть до создания новых разделов «на ходу».

Подробнее о работе


Ставилась задача по максимуму упростить взаимодействие с компонентом.

Добавляем задание

Заходим на страницу компонента, жмём Добавить задание => Добавить RSS-ленту.
На вкладке Основное заполняем примерно так:


Переключаемся на вкладку Конфигурация, где можно указать:
  • Шаблон для создаваемых ресурсов,
  • контекст,
  • родительский контейнер в пределах выбранного контекста,
  • сконфигурировать скачивание медиа-контента,
  • при необходимости поменять базовый тег ленты и базовый тег записи.

Расширения медиа-контента и папки для сохранения каждого из расширений указываются в JSON.

Жмём Сохранить — задание добавлено.

Добавляем поля для парсинга

На только что добавленном задании нажимаем правой кнопкой и выбираем Поля задания:

Откроется список полей задания, который пока пуст.

Помимо добавления задания мы можем просмотреть Массив значений ленты — это распечатанный массив с данным из первой записи ленты:


Запоминаем названия полей, которые нам надо парсить на сайт и кликаем Добавить поле. Откроется окошко с возможностью указать:

  1. Системное поле. Выпадающий список системных полей ресурса и ТВ-полей.

     

  2. Поле в источнике. Текстовое поле, в которое нужно ввести наименование тега в RSS-ленте.
    Можно указать @INLINE чанк, который будет обработан Fenom из pdoTools. В чанке содержатся плейсхолдеры всех возможных полей из RSS-ленты, которые имеются в записи между тегами item, а также массив с настройками задания $_task.
    За счёт внедрения в данное поле Fenom, можно будет, получая значение из тега category (как например в RSS Lenta.ru) делать выборку по базе ресурсов, в поисках ID аналогичной категории на нашем сайте, а если не найдено — добавлять.
    Тег enclosure и ему подобные, указываются либо через чанк: «@INLINE {$enclosure['url']}», либо в виде CSS селектора: «enclosure[url]».
    Если не указано или значение по данному полю в ленте пустое, то в качестве значения для Системное поле будет взято значение из следующего поля — Значение по-умолчанию.

     

  3. Значение по умолчанию. В данном поле можно указать значение, которое будет записано в Системное поле. Например, если мы в Системное поле выбрали class_key, то, чтобы создавались Тикеты, мы в поле Значение по умолчанию пишем «Ticket», а Поле в источнике оставляем пустым.
    Такую же «магию» можно сделать и с полем published, указав в значении по умолчанию цифру «1». Тогда ресурс на сайт будет добавляться сразу опубликованным.


Помимо основых полей с данными, которые необходимо выгрузить на сайт, нам надо ещё добавить поле, по которому пакет будет понимать, что данная запись уже есть на сайте. Для этого добавляем новое поле, значение Системное поле оставляем пустым, а в Поле в источнике пишем, например, «guid» (потому что он менее всего подвержен изменениям). Должно быть как-то так:

Сохраняем. В списке полей на этом поле ставим указатель Уникальное поле (кнопка со звездой слева):


Всё готово к парсингу, как к единоразовому, так и к ежеминутному (у компонента есть скрипт для запуска заданий из крона).

Обсуждение компонента в сообществе MODX.PRO.

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)

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

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

Последние обсуждения в сообществе MODX.pro