Content Import

Un módulo simple de Drupal para importar contenido desde archivos CSV a cualquier tipo de contenido, con soporte para varios tipos de campo y creación automática de entidades.

contentimport
2,072 sites
69
drupal.org

Install

Drupal 10, 9, 8 v10.0.0
composer require 'drupal/contentimport:^10.0'

Overview

Content Import es un módulo sencillo que permite la creación y actualización masiva de contenido desde archivos CSV. Proporciona una interfaz administrativa fácil de usar donde los usuarios pueden seleccionar un tipo de contenido, elegir si crear contenido nuevo o actualizar contenido existente, y subir un archivo CSV para importar.

El módulo soporta una amplia variedad de tipos de campo, incluyendo imágenes, referencias de entidad (términos de taxonomía, usuarios y nodos), campos de texto, campos de fecha y hora, campos booleanos, campos de geolocalización, geofield y campos de lista. Una de sus características principales es la creación automática de vocabularios, términos de taxonomía y usuarios cuando no existen en el sistema, haciendo el proceso de importación fluido.

El proceso de importación se ejecuta como una operación por lotes con retroalimentación de progreso, y se escribe un registro detallado en un archivo de log para la resolución de problemas. Un generador de archivo CSV de ejemplo ayuda a los usuarios a entender el formato requerido para su tipo de contenido.

Features

  • Importar contenido desde archivos CSV a cualquier tipo de contenido de Drupal
  • Crear contenido nuevo o actualizar contenido existente basándose en el ID del nodo
  • Soporte para campos de imagen con creación automática de entidades de archivo desde imágenes previamente subidas
  • Manejo de referencias de entidad para términos de taxonomía con creación automática de vocabularios y términos
  • Manejo de referencias de entidad para usuarios con creación automática de cuentas de usuario si no existen
  • Manejo de referencias de entidad para nodos de contenido por título
  • Soporte para campos de texto (text, text_long, text_with_summary) con formato HTML completo
  • Soporte para campos de fecha y timestamp con análisis flexible de formatos de fecha
  • Soporte para campos booleanos con múltiples valores verdaderos (On/Yes/on/yes)
  • Soporte para campos de geolocalización con valores de coordenadas simples y múltiples
  • Integración con Geofield para datos geográficos con generación de puntos WKT
  • Soporte para campos de lista (String) con valores separados por comas
  • Soporte para alias de ruta URL para URLs amigables para SEO
  • Asignación de autor por nombre de usuario
  • Procesamiento por lotes con indicador de progreso para importaciones grandes
  • Registro de importación en sites/default/files/contentimportlog.txt
  • Generación automática de archivo CSV de ejemplo basado en el tipo de contenido e modo de importación seleccionados
  • Soporte multilingüe mediante el campo langcode

Use Cases

Migración masiva de contenido desde un sistema externo

Exportar contenido desde un CMS externo o base de datos como CSV, mapear las columnas a los nombres de máquina de campos de Drupal, subir las imágenes a la carpeta designada e importar todo el contenido en una operación por lotes. El módulo crea automáticamente términos de taxonomía y cuentas de usuario según sea necesario.

Actualizaciones regulares de contenido desde hoja de cálculo

Mantener contenido en una hoja de cálculo (Excel, Google Sheets), exportar como CSV y usar el modo 'Actualizar contenido existente' para actualizar nodos en masa por su ID de nodo. Útil para actualizar información de productos, detalles de eventos o cualquier contenido que cambie regularmente.

Población inicial de contenido del sitio

Al construir un nuevo sitio Drupal, preparar todo el contenido inicial en formato CSV e importarlo en masa, en lugar de crear nodos uno por uno a través de la interfaz de administración.

Importación de contenido multilingüe

Importar contenido en diferentes idiomas especificando la columna langcode en el CSV. Cada fila puede tener un código de idioma diferente, permitiendo la creación masiva de contenido traducido.

Importación de contenido con taxonomía compleja

Importar contenido con estructuras de taxonomía complejas. El módulo crea automáticamente vocabularios y términos que no existen, facilitando la importación de contenido con nuevas categorizaciones sin crear previamente la estructura de taxonomía.

Tips

  • Siempre descargar el CSV de ejemplo después de seleccionar el tipo de contenido para ver los nombres de máquina de campo exactos requeridos
  • Usar el archivo de log (sites/default/files/contentimportlog.txt) para depurar problemas de importación - muestra el estado detallado para cada campo
  • Para campos booleanos, usar On/Yes/on/yes para valores verdaderos, y Off/No para valores falsos
  • Al importar datos de geolocalización o geofield con múltiples puntos, usar punto y coma (;) para separar pares de coordenadas
  • La importación se ejecuta como un proceso por lotes, por lo que las importaciones grandes no agotarán el tiempo de espera
  • Para referenciar nodos de contenido existentes, usar títulos separados por dos puntos: titulo1:titulo2:titulo3
  • La asignación de autor requiere la columna 'author' con valores de nombre de usuario - el usuario ya debe existir

Technical Details

Admin Pages 1
Content Import /admin/config/content/contentimport

Formulario principal de importación para subir archivos CSV e importar contenido a Drupal. Los usuarios seleccionan un tipo de contenido y modo de importación, luego suben un archivo CSV. El formulario genera dinámicamente un archivo CSV de ejemplo mostrando los encabezados de columna requeridos para el tipo de contenido seleccionado.

Permissions 1
Administrar configuración del sitio

Permiso de core requerido para acceder al formulario de Content Import. Los usuarios deben tener este permiso para importar contenido mediante CSV.

Hooks 1
hook_preprocess_page

Adjunta la biblioteca CSS del módulo a la página de administración de Content Import para estilos personalizados.

Troubleshooting 7
Error 'No hay permiso para crear archivo de log'

Asegurar que el directorio sites/default/files/ tenga permisos de escritura para el usuario del servidor web.

Las imágenes no se importan

Subir previamente todas las imágenes a la carpeta public://<content_type>/images/ antes de importar. Usar el módulo IMCE o FTP para subir. El CSV debe contener solo el nombre del archivo, no la ruta completa.

Error 'falta title o langcode'

Asegurar que tu CSV tenga columnas 'title' y 'langcode' en la primera fila. Estos son obligatorios para crear contenido nuevo.

Error 'nodeid no existe en el sistema'

Cuando se usa el modo 'Actualizar contenido existente', asegurar que los valores de nodeid en el CSV correspondan a nodos existentes reales en Drupal.

Los términos de taxonomía no se crean

Para campos con múltiples vocabularios de destino, usar el formato 'vocabulary:term1,term2'. Para destinos con un solo vocabulario, se puede omitir el nombre del vocabulario.

Los valores de campo de fecha no se importan correctamente

Usar el formato m/d/Y h:m:i para valores de datetime o m/d/y para valores solo de fecha.

La referencia de entidad a usuarios no funciona

Proporcionar direcciones de correo electrónico en el CSV. El módulo busca usuarios por email y crea nuevas cuentas de usuario si no se encuentran.

Security Notes 3
  • El módulo requiere el permiso 'administer site configuration', limitando el acceso a administradores de confianza
  • Las cuentas de usuario creadas automáticamente durante la importación se activan inmediatamente - revisar los usuarios importados si se importan datos no confiables
  • La validación del archivo CSV solo verifica la extensión del archivo - asegurar que los archivos CSV provengan de fuentes confiables antes de importar