Importar contenido traducido en Drupal

  • 23 Abr 2014
  • Drupal 7

Usando el módulo Feed es posible crear contenidos en Drupal simplemente importando un archivo en txt, csv, tsv o xml. Simplemente se asocian los campos del archivo que se importa con los del formulario del tipo de contenido correspondiente.

Si el tipo de contenido con el que se está trabajando está configurado para ser traducible, se presenta un problema: Cómo le digo que el artículo que estoy importando es la traducción de un artículo ya importado?

Bien... necesitaríamos tener un campo en común en los archivos que se importan. Un campo que tenga el mismo valor tanto en su idioma original como en su traducción. Por lo general, ningún campo cuenta con esta propiedad, ya que los campos se traducen. Pero podríamos crear un campo llamado "unico" que esté compuesto por el título en su idioma original.

En mi caso fue simple, porque el campo en cuestión era el título. Así que con un simple query pude asociar los distintos artículos con sus traducciones. Si no hubiese sido así, tendría que haber usado algún JOIN.

Esta es la consulta que actualiza la columna tnid con el id del nodo (nid) del artículo con el mismo título.

UPDATE node AS node_it, (
  SELECT 
    nid, title
  FROM 
    node 
  WHERE 
    language = 'en') AS node_en
SET 
  node_it.tnid = node_en.nid 
WHERE 
  node_it.title = node_en.title;