Quelle est la meilleure solution pour importer des fichiers CSV dans des nœuds ou des entités dans Drupal 8 qui offre une interface utilisateur afin que les éditeurs de contenu puissent importer régulièrement?
J'ai entendu dire que D8 Migrate fonctionnait bien, mais je comprends qu'il n'y a actuellement aucune interface utilisateur pour le processus d'importation.
L'importation CSV via les flux ne semble pas encore prête.
8
migration
feeds
importing-exporting
Scott Anderson
la source
la source
Réponses:
Je le fais tout le temps, en utilisant des entités de configuration de migration (fournies par le module migrate_plus ). Définissez un plugin de migration dans le répertoire config / install de votre module de migration, en utilisant le plugin source CSV du module migrate_source_csv - en omettant la configuration source 'path', qui sera remplie à partir du formulaire. Supposons que l'ID de cette migration soit example_csv. Créez un formulaire avec un élément de téléchargement de fichier (nommé 'csv_file' dans ce cas), et dans la méthode submitForm ():
Cela met à jour les paramètres de migration avec le nouveau fichier. Vous devez toujours exécuter la migration en utilisant
drush mi example_csv
pour importer réellement le contenu.Ou ajoutez du code à la fonction pour exécuter réellement l'importation:
la source
Il est probablement meilleur et plus rapide d'utiliser les flux , mais puisque la version D8 est toujours en cours de développement; vous pouvez également utiliser Excel + VBA ( Visual Basic pour Applications , fourni avec Excel) + Internet Explorer 11.
Voici un exemple de la façon dont vous pouvez importer votre contenu CSV à l'aide de VBA.
Par exemple, supposons que vous souhaitiez l'importer et créer de nouveaux nœuds avec les informations de votre CSV:
Voici un exemple de code VBA:
Assurez-vous de changer le nom de domaine en
myURL = "https://rgr79.ply.st/node/add/article"
ligne pour votre domaine. J'utilise un domaine Simplytest.me , si vous ne le savez pas déjà.Comment ajouter le code VBA?
Cliquez sur l'onglet Développeur puis sur l'icône Visual Basic (ou ALT + F11)
et collez le code à l'intérieur de Sheet1 (Sheet1)
Maintenant, dans la barre d'outils, cliquez sur
tool
puis surReferences
Vous devrez faire défiler, rechercher et cocher
Remarque: je sais que cela fonctionne avec Internet Explorer 11, je ne sais pas s'il fonctionne avec le nouveau navigateur Microsoft Edge.
Vous êtes maintenant prêt à exécuter le script. Vous pouvez le faire en cliquant sur le bouton Lecture
Vous pouvez également l'exécuter en cliquant sur l'icône Macros (voir image2), mais je préfère le faire à partir de la fenêtre VBA.
Donc, vous appuyez sur le bouton de lecture et une fenêtre IE s'ouvre automatiquement et vous voyez ceci:
Oh oui, vous avez oublié de vous connecter, lol.
Vous vous connectez donc à Drupal, puis vous fermez l'explorateur (car l'historique des cookies enregistre votre connexion) et vous prévoyez d'appuyer à nouveau sur le bouton de lecture. Mais vous n'êtes pas en mesure de ... vous voyez le bouton de lecture grisé et vous ne pouvez pas apporter de modifications au code VBA ... Que se passe-t-il?
Eh bien, votre code est toujours en cours d'exécution, vous devez donc appuyer sur le bouton Arrêter (réinitialiser).
Vous pouvez maintenant cliquer à nouveau sur le bouton de lecture et profiter du monde de l'automatisation.
Important
Si vous prévoyez d'insérer des éléments dans le champ Body (comme nous le faisons dans cet exemple), puisque Drupal 8 utilise CKEditor pour ce champ et CKEditor est JS, nous ne pouvons pas cibler une classe div ou un ID; ainsi, nous ne pouvons pas ajouter de contenu à l'intérieur de CKEditor.
Heureusement, il existe un travail autour. Assurez-vous que vos paramètres de sécurité IE 11 sont définis sur Élevé, cela bloquera automatiquement tous les JS. Par conséquent, CKeditor ne se chargera pas et le champ body sera comme les autres champs.
Si vous devez modifier l'exemple de nœuds:
la source
Ce qui précède fonctionne très bien pour moi , mais
Migratin::Load()
etsave()
méthode n'est pas disponible dans Drupal 8 3.x. J'ai fait quelques changements dans le code suggéré par @Mike Ryan ci-dessus. Voici le code de travail sur le gestionnaire de sumbit de formulaire.la source
Vous pouvez maintenant utiliser le module d'importation de contenu ( https://www.drupal.org/project/contentimport ). Voici un article sur la façon de l'utiliser: https://www.ostraining.com/blog/drupal/content-import-module/
la source