Comunidad Drupal en español

Importar nodos en Drupal


By Ariel - Posted on 15 Abril 2008

Veremos una forma de importar nodos en Drupal que me funciono muy bien.

Los datos a importar tienen que estar en un archivo CSV, que es un archivo de texto con las columnas separadas por comas.

Mi archivo CSV tiene esta forma:

titulo-nodo,cuerpo-nodo,fecha-creacion,tid1,tid2

tid1 y tid2 son los id de categorias, que tienen que estar previamente configuradas.

fecha-creacion tiene que estar en un formato reconocido por la funcion de php strtotime(), dos formatos que funcionan son: 14-APR-2008 y 2008-4-14

La importación se hace con un script que lee el archivo CSV y lo importa como nodos utilizando la funcion de Drupal node_save()

El script lo ingrese como página y cada vez que el administrador ve la pagina, se realiza la importación.

<?php

global $user;

if($user->uid!=1) {
print
"Acceso negado";
return;
}

$handle = fopen("/drupal/archivo.csv", "r");

// fgetcsv es la funcion que lee las lineas del archivo csv
// 100 es la maxima longitud de la linea

$lineno = 0;
while (
$line = fgetcsv ($handle, 100)) {
 
$lineno++;
 
$titulo = $line[0];
 
$cuerpo = $line[1];
 
$fecha  = $line[2];
 
$tid1   = $line[3];
 
$tid2   = $line[4];

  $int_fecha = strtotime($fecha);  // Intentamos convertir la fecha a segundos

  $term1 = new StdClass();
 
$term1->tid = $tid1;

  $term2 = new StdClass();
 
$term2->tid = $tid2;

  $node = new StdClass();
 
$node->type = 'node-type'// Reemplazar node-type con el nombre de los nodos que estamos importando
 
$node->uid = 1// Usuario propietario del nodo

  // Si se pudo convertir la fecha la guardamos
  // Si la fecha no se pudo convertir, se importaran los nodos con la fecha actual
  if($int_fecha)
   
$node->created = $int_fecha;

  $node->status = 1; // Published
 
$node->promote = 0;
 
$node->sticky = 0;
 
$node->title = $titulo;
 
$node->body = $cuerpo;

  $node->taxonomy[$tid1] = $term1;
 
$node->taxonomy[$tid2] = $term2;

  node_save($node);
  }

fclose($handle);
print
"Se importaron $lineno nodos";
?>

El script es bastante rudimentario, le falta comprobacion de errores, como verificar si la apertura de archivo es exitosa, que el titulo del nodo no esta vacio, etc.

Más información en este hilo de Drupal.org.

Enviado por PolinaB13 el 6 Mayo, 2011 - 06:29.

When I become nervous I take xanax, if I wish to know more, I get this wonderful website, many thanks

Enviado por ArinaM3 el 24 Mayo, 2011 - 03:16.

I can't suppose that the writer is so great. If I needed to select what to do - get weight loss pills or go to this website - of course I would choose the 2nd

Enviado por ArinaM3 el 24 Mayo, 2011 - 03:17.

Similar in a moving storage, all information received from this beautiful website is safe in my mind, that creates glad that I can share my thoughts with you



Navegación

Inicio de sesión

En línea

En este momento hay 0 usuarios y 1 invitado en línea.