¿Cuál es la mejor solución para importar archivos CSV en nodos o entidades en Drupal 8 que ofrece una interfaz de usuario para que los editores de contenido puedan importar regularmente?
Escuché que D8 Migrate funciona bien, pero entiendo que actualmente no hay una interfaz de usuario para el proceso de importación.
La importación de CSV a través de Feeds todavía no parece estar lista.
8
migration
feeds
importing-exporting
Scott Anderson
fuente
fuente
Respuestas:
Hago esto todo el tiempo, haciendo uso de entidades de configuración de migración (proporcionadas por el módulo migrate_plus ). Defina un complemento de migración en el directorio config / install de su módulo de migración, utilizando el complemento de origen CSV del módulo migrate_source_csv , omitiendo la configuración de origen 'ruta', que se completará desde el formulario. Digamos que la ID de esta migración es example_csv. Cree un formulario con un elemento de carga de archivos (llamado 'csv_file' en este caso) y en el método submitForm ():
Esto actualiza la configuración de migración con el nuevo archivo. Todavía tiene que ejecutar la migración usando
drush mi example_csv
para importar realmente el contenido.O agregue algún código a la función para ejecutar realmente la importación:
fuente
Probablemente sea mejor y más rápido usar Feeds , pero dado que la versión D8 todavía está en desarrollo; alternativamente, puede usar Excel + VBA ( Visual Basic para aplicaciones , viene con Excel) + Internet Explorer 11.
Aquí un ejemplo de cómo puede importar su contenido CSV usando VBA.
Por ejemplo, supongamos que desea importar esto y crear nuevos nodos con la información de su CSV:
Aquí hay un código VBA de muestra:
Asegúrese de cambiar el nombre de dominio en
myURL = "https://rgr79.ply.st/node/add/article"
línea a su dominio. Estoy usando un dominio simplytest.me , si aún no lo sabes.¿Cómo agregar el código VBA?
Haga clic en la pestaña Desarrollador y luego en el icono de Visual Basic (o ALT + F11)
y pegue el código dentro de Sheet1 (Sheet1)
Ahora en la barra de herramientas, haga clic en
tool
y luegoReferences
Deberá desplazarse, buscar y marcar
Nota: Sé que funciona con Internet Explorer 11, no estoy seguro si funciona con el nuevo navegador Microsoft Edge.
Ahora estás listo para ejecutar el script. Puede hacerlo haciendo clic en el botón Reproducir
También puede ejecutarlo haciendo clic en el icono de macros (ver imagen2), pero prefiero hacerlo desde la ventana de VBA.
Entonces presionas el botón de reproducción y una ventana de IE se abre automáticamente y ves esto:
Oh sí, olvidaste iniciar sesión, jajaja.
Entonces procedes a iniciar sesión en Drupal y luego cierras el explorador (ya que el historial de cookies guarda tu inicio de sesión) y planeas presionar el botón de reproducción nuevamente. Pero no puede ... ve el botón de reproducción atenuado y no puede realizar ningún cambio en el código VBA ... ¿Qué está pasando?
Bueno, su código aún se está ejecutando, por lo que debe presionar el botón Detener (restablecer).
Ahora puede hacer clic en el botón de reproducción nuevamente y disfrutar del mundo de la automatización.
Importante
Si planea insertar cosas en el campo Cuerpo (como lo estamos haciendo en este ejemplo), dado que Drupal 8 usa CKEditor para este campo y CKEditor es JS, no podemos apuntar a una clase div o ID; por lo tanto, no podemos agregar contenido dentro de CKEditor.
Afortunadamente, hay una solución alternativa. Asegúrese de que la configuración de seguridad de IE 11 esté establecida en Alta, esto bloqueará automáticamente todos los JS. Por lo tanto, CKeditor no se cargará, y el campo del cuerpo será igual que los otros campos.
Si necesita editar nodos, por ejemplo:
fuente
La multa anterior está trabajando para mí, pero
Migratin::Load()
y elsave()
método no está disponible en Drupal 8 3.x. He realizado algunos cambios en el código sugerido arriba de @Mike Ryan. Aquí está el código de trabajo en el controlador de formulario sumbit.fuente
Ahora puede usar el módulo de importación de contenido ( https://www.drupal.org/project/contentimport ). Aquí hay una publicación sobre cómo usarla: https://www.ostraining.com/blog/drupal/content-import-module/
fuente