Migraciones e Importaciones con Drupal 7

En este articulo hablaremos sobre las distintas manera de importar contenido externo a Drupal, y sobre cual es el mejor método para determinados casos de importación.

Hay básicamente cuatro maneras distintas de importar contenido con Drupal.

  • Usar el modulo Feeds

  • Usar el modulo Migrate

  • Crear un modulo personalizado

  • Importar manualmente

 

Modulo Feeds

Feeds es un modulo muy potente y amigable, no has de tocar nada de código gracias a su interfaz de usuario.

Si la importación a realizar no es muy compleja (la mayoría no lo son), configurar Feeds para importar los típicos archivos csv o xml y convertirlos en nodos, usuarios o taxonomías es muy rápido y simple.

 

Feeds se basa en otros módulos de Drupal que extienden enormemente sus características. Una lista completa de estos modulo se puede encontrar aquí: https://www.drupal.org/node/856644

 

De esa lista se ha de destacar el modulo Feeds Tamper, que permite modificar los datos antes de guardarlos.

Con este Feeds Tamper se pueden realizar importaciones que de otro modo requerirían o modificar los documentos a importar o crear un modulo personalizado que realice la importación.

Por ejemplo, se pueden realizar las siguientes tareas de forma muy simple y sin programar una sola linea de código:

  • Juntar Nombre y Apellidos en un solo campo

  • Crear usuarios a partir de la dirección de correo electrónico (eliminando @dominio.com)

  • Solo importar si un variable tiene un valor especifico (ej: Solo importar contenido publicado)

  • Modificar formatos de fechas

  • Sustituir/eliminar valores (Ej: lista negra de palabras o dominioantiguo.com por dominionuevo.com)

  • ...

 

Cosas que se pueden hacer con Feeds:

  • Realizar importaciones periódicas. Ej: Importar eventos de un calendario de Google cada 12h.

  • Obtener la información a importar desde un archivo o desde un enlace externo.

  • Importar los valores directamente de una pagina HTML.

  • Importar los valores desde un RSS.

  • Realizar importaciones en segundo plano.

  • Especificar más de un importador. Se puede tener por ejemplo un importador para nodos tipo “noticias”, otro para unas taxonomías y otro para nodos tipo “tienda” que tienen datos de geolocalización.

  • Eliminar solo las entidades de Drupal que se han importado con X importador pero no las que se han creado con otros importadores. (Perfecto para solo eliminar el contenido importado y no afectar al que ya se había creado manualmente)

 

Cosas malas de Feeds

Feeds es muy potente y flexible, pero tiene limitaciones y puedes perder mucho tiempo si intentas usarlo para lo que no toca.


 

Modulo Migrate

La configuración de Migrate es toda por código (creas tu propio modulo Drupal para que use Migrate), por lo que su curva de aprendizaje es mucho mas elevada que Feeds. En resumen, para usar Migrate se ha de crear un modulo Drupal que extienda/configure el propio modulo Migrate.

La ventaja de Migrate es que si sabes como usarlo es relativamente fácil y rápido importar contenido que con Feeds seria mas complicado o casi imposible. Como todo se hace programando en PHP, se pueden modificar los valores a importar directamente (mejor que Feeds Tamper).

No es muy complicado crear tu modulo de Migrate y actualmente existen unos cuantos ejemplos que solo se han de adaptar para importar tus propios archivos csv, o importar tus contenidos desde un Wordpress o desde otro Drupal.

Migrate, igual que Feeds, permite eliminar los contenidos importados. Cosa que se agradece si deseamos eliminar solo los contenidos importados y no todos los del sitio.

 

Modulo personalizado

No es la mejor manera, porque es muy difícil realizar actualizaciones de contenido sin crear duplicados. Y no es fácil eliminar el contenido importado sin eliminar otros contenidos que queremos conservar (ver el modulo “Delete all”)

La ventaja que tiene es que creando tu propio modulo y usando la función node_save(), es la manera en que se puede personalizar más una importación difícil.

La verdad es que no se recomienda usar este método si se pueden usar los módulos Feeds o Migrate. Para la gran mayoría de casos con esos dos módulos se tiene mas que suficiente, otro tema es que te guste reinventar la rueda o cobres por horas ;)

 

Importar contenido manualmente

Esto significa que copias a mano el contenido y lo pegas donde quieres (creas/actualizas nodos, taxonomias, usuarios, ...)) solo se recomienda si hay poco contenido a importar. Los típicos websites con 4 paginas (“quienes somos”, “donde estamos”, …).

No es lo habitual, pero alguna vez se ha hecho. Ya que es la manera mas rápida si tienes muy poco contenido.

 

Conclusiones

Siempre que puedas utiliza Feeds, es a mi entender el mejor (para la gran mayoría de casos).

Si tus importaciones siguen siempre la misma linea (ej: siempre usas csv para nodos parecidos), al principio te costará, pero al final iras más rápido y te será mas simple usar Migrate.

Si con Feeds no te las arreglas para importar tus datos, y necesitas algo más personalizado, has de usar Migrate.

Y si ni Feeds ni Migrate te sirven, pues tendrás que crear un modulo personalizado (solo para expertos).

Contacto

¿Te interesan nuestros servicios?

Contáctanos