Comment importer des flux externes dans votre site Web Drupal 9 avec le module de flux
Publié: 2020-11-03En tant que développeur, vous rencontrerez plusieurs situations dans lesquelles vous devrez importer des données à partir de sources externes. Parfois, vous devrez importer des données de plusieurs sources dans votre site Web Drupal 9. Le module Feeds de Drupal est un module simple et sans tracas qui permet même aux utilisateurs non techniques d'importer du contenu à partir de différentes sources de données. Ce qui le rend plus simple que d'autres modules Drupal comme le module Migrate, c'est que l'ensemble du processus d'importation se fait via l'interface utilisateur de Drupal. Il vous fournit le contenu comme vous le souhaitez dès qu'il est disponible.
De nombreux sites Web importent des flux RSS/XML de sites tiers. Dans ce blog, nous allons obtenir un fil d'actualités importé via cette API tierce qui fournit des données au format json à l'aide du module Feeds de Drupal 9.

Installation du module de flux Drupal
Le module Feeds pour Drupal 9 vous permet d'importer des données de différents formats tels que CSV, XML, JSON, RSS, etc. dans des nœuds, des utilisateurs et des termes de taxonomie via l'interface utilisateur.
1. Installez le module Drupal Feeds (Ici, nous utiliserons composer)
composer require 'drupal/feeds:^[email protected]'composer require 'drupal/feeds:^[email protected]'
2. Ici, nous utilisons des flux JSON pour importer des données. Nous avons donc besoin d'un analyseur JSON qui nous demandera d'installer un module supplémentaire qui est l'analyseur extensible Feeds. La meilleure façon d'installer ce module est d'utiliser composer car il télécharge toutes les bibliothèques requises. (Vous pouvez également ignorer la première étape si vous téléchargez à l'aide de composer car le module de flux Drupal sera une dépendance du module feed_ex ).
composer require 'drupal/feeds_ex:^[email protected]'composer require 'drupal/feeds_ex:^[email protected]'
Remarque : si vous n'utilisez pas composer pour l'installation, les bibliothèques requises par ce module peuvent également être installées avec le module Ludwig. Installez le module Ludwig, puis accédez à /admin/reports/packages pour obtenir des instructions supplémentaires.
3. Activez le module feeds et feeds_ex (Feeds Extensible Parsers) à l'aide de drush ou via l'interface utilisateur.

Configuration et mise en œuvre du module de flux
Ici, nous allons importer les données des articles du site Web https://newsapi.org/ (Sujets liés aux « Principaux titres de TechCrunch en ce moment ») qui sont exposées au format JSON illustré dans la capture d'écran ci-dessous.
Pour obtenir ces données d'actualité, nous devons nous connecter au site Web et obtenir une clé API. Ensuite, sélectionnez les sujets pour lesquels vous souhaitez importer les données sur votre site Web.

En regardant l'API, créons un type de contenu où nos données doivent être importées.
Création d'un type de contenu
Ici, j'ai créé un nouveau type de contenu appelé « News ». Choisissez le type de champ en fonction de votre JSON pour lequel les données doivent être migrées.

Dans la capture d'écran ci-dessus, nous avons choisi des champs simples pour importer les données comme Author qui est un champ Text (plain) pour les données d'importation de JSON key author .

Comme vous le voyez dans la capture d'écran ci-dessus, nous avons ajouté le champ d' élément Flux de type Flux et choisi le type de flux en conséquence. Nous allons apprendre à créer un type de flux dans la section suivante ci-dessous.
Création d'un type de flux
Suivez les étapes ci-dessous pour créer un type de flux.
- Accédez à la page de présentation des flux ( /admin/structure/feeds ). Vous pouvez voir tous les flux Drupal répertoriés sur cette page.
J'ai déjà créé 2 flux. Ici, je vais utiliser les fils d'actualités . Vous pouvez créer votre propre type de flux en cliquant sur Ajouter un type de flux. - Lors de la modification du type de flux ou de l'ajout d'un nouveau type de flux, nous verrons les options ci-dessous.
- Paramètres de base
Configurons les paramètres de base pour le type de flux. Tout d'abord, fournissez le nom, la description et l'explication ou les directives de soumission pour le type de flux.
La période d'importation (affichée dans l'onglet Paramètres ci-dessous) vous aide à choisir la fréquence d'exécution de l'importation. Cela se fera via une tâche cron. Si vous sélectionnez Désactivé, l'importation sera effectuée manuellement.

- L'option Paramètres de l' extracteur indique d'où vous importez le contenu ou récupérez le contenu.
Il offre 3 options au choix,
- Répertoire :- Importez le contenu d'un fichier ou d'une série de fichiers déjà présents sur votre site Web.
- Télécharger depuis l'URL :- Importez le contenu depuis l'url (que nous choisirons dans notre cas).
- Télécharger le fichier :- Importez le contenu d'un fichier.
En fonction du Fetcher sélectionné, nous devrons configurer les paramètres du Fetcher. Pour l'option secondaire des paramètres de récupération, nous avons la liste de paramètres ci-dessous.

- Détecte automatiquement les flux
- Utiliser PubSubHubbub
- Toujours télécharger
- Demander un délai d'attente
Configurez les paramètres secondaires en conséquence.

• L' analyseur vous permet de configurer le format du flux. Ici, nous avons de nombreuses options parmi lesquelles choisir, telles que CSV, HTML, OPML, JsonPath (qui est notre paramètre), etc. Choisissez celle dans le menu déroulant en fonction du format de votre flux.
En fonction de l'analyseur sélectionné, nous devrons configurer les paramètres de l'analyseur. Dans notre cas, nous n'avons aucun paramètre d'analyseur pour les analyseurs de type JsonPath.
• Les paramètres du processeur affichent les configurations du type de contenu que le flux va créer.
De même, nous avons une option de paramètres secondaires pour le processeur, comme indiqué dans l'image ci-dessous.

Configurez vos paramètres secondaires en fonction des besoins.
La capture d'écran ci-dessous montre les paramètres principaux de l'extracteur, de l'analyseur et du processeur.

3. Cartographier les sources à cibler
- Le contexte
Le texte d'aide indique la requête de base à exécuter, qui affiche la racine ou la base des données à cibler pour l'importation des flux Drupal en tant que contenu. Dans notre exemple, nous l'avons configuré comme « $.articles .* » car nos données résident à l'intérieur de la clé de l'article. Regardez cette documentation de chemin pour configurer le vôtre.
- Mappages de champs
Maintenant, nous pouvons configurer le module Feeds pour décider quelle valeur extraite du JSON doit correspondre à quel champ du type de contenu d'actualités Drupal.
Ces cibles sont les champs de données Drupal et sont extraites en fonction du processeur que vous sélectionnez lors de la création du type de flux. Vous pouvez également configurer d'autres paramètres pour les mappages particuliers des champs comme la langue, le format de filtre (applicable pour les champs au format texte), unique (identifiant unique utilisé pour suivre si le contenu est nouveau ou existant), etc.
Par exemple, si nous voulons importer le titre du contenu de l' article d' actualités du flux JSON en tant que champ de titre de contenu d'actualités Drupal, la cible sera le champ Titre Drupal et la source sera la clé du titre de l'article d'actualités JSON, comme indiqué dans la capture d'écran ci-dessous.

Ici, nous utilisons la configuration de mappage comme indiqué dans la capture d'écran ci-dessous.

Vous pouvez également cloner le type de flux à l'aide du module Drupal de clonage d'entité qui est également pris en charge dans Drupal 9.
Création d'un flux
Pour créer un flux, accédez au contenu -> onglet Flux -> ajouter un flux -> sélectionnez le type de flux

J'en ai déjà créé un pour News. Pour créer un nouveau flux, cliquez sur le bouton + Ajouter un flux et configurez le flux selon vos besoins. Pour notre blog, nous avons configuré comme indiqué dans la capture d'écran ci-dessous.

Après la configuration, cliquez sur Enregistrer et importer . Cela importera les flux Drupal en tant que contenu. Lorsque les données sont importées, vous verrez l'état du traitement comme indiqué dans la capture d'écran ci-dessous.

Une fois les données JSON migrées vers le contenu, nous pouvons voir le contenu ajouté au type de contenu d'actualités, comme indiqué dans la capture d'écran ci-dessous.

Maintenant, comparons le contenu importé avec les flux.


Pour plus d'informations, vous pouvez vous référer à ce guide.
Modules supplémentaires pour étendre le module Feeds
• Le module Feeds Tamper vous aide à modifier et à mettre à jour les données sources avant qu'elles ne soient importées sur votre site Web.
• Les analyseurs de flux extensibles contiennent un ensemble d'analyseurs tels que XPath XML et HTML, l'analyseur de lignes JSONPath JSON et JSON, etc.
• Le module Feeds Import Preview vous permet de voir le contenu de votre source avant de l'importer.
• Le module Commerce Feeds vous aide à importer des produits sur votre site Drupal Commerce.
