Как импортировать внешние каналы на ваш сайт Drupal 9 с помощью модуля каналов

Опубликовано: 2020-11-03

Как разработчик, вы столкнетесь с несколькими ситуациями, когда вам нужно импортировать данные из внешних источников. Иногда вам нужно импортировать данные из более чем одного источника на ваш сайт Drupal 9. Модуль Feeds в Drupal - это простой модуль без суеты, который позволяет даже нетехническим пользователям импортировать контент из разных источников данных. Что делает его проще, чем другие модули Drupal, такие как модуль Migrate, так это то, что весь процесс импорта выполняется через пользовательский интерфейс Drupal. Он доставляет вам контент в том виде, в каком вы хотите, как только он становится доступным.

Многие веб-сайты импортируют RSS / XML-каналы со сторонних сайтов. В этом блоге мы собираемся получить ленту новостей, импортированную через этот сторонний API, который предоставляет данные в формате json с помощью модуля Feeds в Drupal 9.

drupal-9-feeds-модуль

Установка модуля Drupal Feeds

Модуль Feeds для Drupal 9 позволяет импортировать данные из различных форматов, таких как CSV, XML, JSON, RSS и т. Д., В узлы, пользователей и термины таксономии через пользовательский интерфейс.

1. Установите модуль Drupal Feeds (здесь мы будем использовать композитор)

 composer require 'drupal/feeds:^[email protected]'
composer require 'drupal/feeds:^[email protected]'

2. Здесь мы используем каналы JSON для импорта данных. Итак, нам нужен парсер JSON, который потребует от нас установки еще одного модуля - расширяемого парсера Feeds. Лучший способ установить этот модуль - использовать композитор, потому что он загружает все необходимые библиотеки. (Вы также можете пропустить первый шаг, если загружаете с помощью composer, поскольку модуль каналов Drupal будет зависимым от модуля feed_ex ).

 composer require 'drupal/feeds_ex:^[email protected]'
composer require 'drupal/feeds_ex:^[email protected]'

Примечание. Если вы не используете композитор для установки, то библиотеки, необходимые для этого модуля, также могут быть установлены с модулем Ludwig. Установите модуль Ludwig, а затем перейдите в / admin / reports / packages для получения дальнейших инструкций.

3. Включите модуль feeds и feeds_ex (Расширяемые анализаторы каналов) с помощью drush или через пользовательский интерфейс.

Модуль каналов

Настройка и внедрение модуля каналов

Здесь мы собираемся импортировать данные из статей на веб-сайте https://newsapi.org/ (темы, связанные с « Основные заголовки с TechCrunch прямо сейчас »), которые представлены в формате JSON, показанном на скриншоте ниже.

Чтобы получить эти новостные данные, нам необходимо войти на сайт и получить ключ API. Затем выберите темы, данные по которым вы хотите импортировать на свой веб-сайт.

конфигурация модуля подачи

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

Создание типа контента

Здесь я создал новый тип контента под названием « Новости ». Выберите тип поля в соответствии с вашим JSON, данные для которого необходимо перенести.

модуль подачи типа контента

На приведенном выше снимке экрана мы выбрали простые поля для импорта данных, такие как Автор, который является текстовым (обычным) полем для импорта данных от автора ключа JSON .

Автор ключа JSON

Как вы видите на скриншоте выше, мы добавили поле элемента « Каналы» с типом « Канал» и выбрали соответствующий тип канала. В следующем разделе ниже мы узнаем, как создать тип канала.

Создание типа фида

Выполните следующие шаги, чтобы создать тип канала.

  1. Перейдите на страницу обзора каналов ( / admin / structure / feeds ). Вы можете увидеть все каналы Drupal, перечисленные на этой странице. тип корма - модуль подачи Я уже создал 2 канала. Здесь я буду использовать новостные ленты . Вы можете создать свой собственный тип канала, нажав Добавить тип канала.
  2. При редактировании типа канала или добавлении нового типа канала мы увидим следующие параметры.
  • Основные настройки
    Давайте настроим основные параметры для типа канала. Сначала укажите имя, описание и пояснение или инструкции по отправке для типа канала.
    Модуль подачи основных настроек

    Период импорта (показанный на вкладке настроек ниже) помогает вам выбрать, как часто следует запускать импорт. Это будет сделано с помощью cron. Если вы выберете « Выкл.», Импорт будет выполнен вручную.

модули подачи
  • Параметр настроек сборщика показывает, откуда вы импортируете или извлекаете контент.
    Он предоставляет 3 варианта на выбор,
  1. Каталог: - Импортируйте содержимое из файла или серии файлов, уже находящихся на вашем веб-сайте.
  2. Скачать с URL: - Импортировать контент с URL (который мы выберем в нашем случае).
  3. Загрузить файл: - Импортировать содержимое из файла.

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

  • Автоопределение фидов
  • Используйте PubSubHubbub
  • Всегда скачивать
  • Тайм-аут запроса

Соответственно настройте вторичные параметры.

Настроить - модули подачи

Parser позволяет настроить формат ленты. Здесь у нас есть много вариантов на выбор, например CSV, HTML, OPML, JsonPath (это наша настройка) и т. Д. Выберите тот из раскрывающегося меню, который соответствует формату вашего канала.

В зависимости от выбранного парсера нам нужно будет настроить параметры парсера. В нашем случае у нас нет никаких настроек парсера для парсеров типа JsonPath.

• В настройках процессора отображаются конфигурации типа контента, создаваемого фидом.

Точно так же у нас есть опция вторичных настроек для процессора, как показано на изображении ниже.

модули подачи

Настройте дополнительные параметры в соответствии с требованиями.
На приведенном ниже снимке экрана показаны основные настройки сборщика, парсера и процессора.

модули подачи


3. Сопоставление источников с целями

  • Контекст

В тексте справки указано, что нужно выполнить базовый запрос, который показывает корень или базу данных, которые будут нацелены на импорт каналов Drupal в качестве содержимого. В нашем примере мы настроили его как «$ .articles . *», Потому что наши данные находятся внутри ключа статьи. Посмотрите документацию по этому пути, чтобы настроить свой.

  • Сопоставления полей

Теперь мы можем настроить модуль Feeds, чтобы решить, какое значение, полученное из JSON, должно сопоставляться с каким полем в типе контента новостей Drupal.

Эти цели являются полями данных Drupal и извлекаются в зависимости от процессора, который вы выбираете при создании типа канала. Вы также можете настроить другие параметры для конкретных сопоставлений полей, таких как Язык, формат фильтра (применимо для полей с текстовым форматированием), уникальный (уникальный идентификатор, используемый для отслеживания, является ли контент новым или существующим) и т. Д.

Например, если мы хотим импортировать заголовок содержимого новостной статьи канала JSON в качестве поля заголовка содержимого новостей Drupal, то целью будет поле заголовка Drupal, а источником будет ключ заголовка новостной статьи JSON, как показано на снимке экрана ниже.

Каналы JSON

Здесь мы используем конфигурацию сопоставления, как показано на снимке экрана ниже.

модули подачи

Вы также можете клонировать тип канала с помощью модуля Entity clone Drupal, который также поддерживается в Drupal 9.

Создание фида

Чтобы создать ленту, перейдите к содержимому -> вкладка Ленты -> добавить ленту -> выберите тип фида.

модули подачи

Я уже создал его для новостей. Чтобы создать новый канал, нажмите кнопку + Добавить канал и настройте канал, как требуется. Для нашего блога мы настроили, как показано на скриншоте ниже.

модули подачи

После настройки нажмите « Сохранить и импортировать» . Это будет импортировать каналы Drupal как контент. Когда данные будут импортированы, вы увидите статус обработки, как показано на скриншоте ниже.

модули подачи

Как только данные JSON будут перенесены в контент, мы сможем увидеть контент, добавленный к типу контента новостей, как показано на снимке экрана ниже.

модули подачи

Теперь сравним импортированный контент с фидами.

модули подачи
Исходный контент из статьи techcrunch
модули подачи
Импорт каналов Drupal - модуль каналов

Для получения более подробной информации вы можете обратиться к этому руководству.

Дополнительные модули для расширения модуля каналов

• Модуль Feeds Tamper помогает вам изменять и обновлять исходные данные перед их импортом на ваш сайт.
• Расширяемые парсеры каналов содержат набор парсеров, таких как XPath XML и HTML, парсер строк JSONPath, JSON и JSON и т. Д.
• Модуль «Предварительный просмотр импорта каналов» позволяет просматривать контент в источнике перед его импортом.
• Модуль Commerce Feeds помогает импортировать товары на ваш сайт Drupal Commerce.