Importar nodos en Drupal
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,tid2tid1 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.
- blog de Ariel
- Inicie sesión o regístrese para enviar comentarios
- 1543 lecturas