Crear nodos via codigo en Drupal
Noviembre 16, 2010
Voy escribir y dejar asentado este pequeño pedazo de codigo, porque ya otras veces tuve que utilizar algo similar, muy muy util a la hora de generar wrapper, crawler o bichos similares que obtienen información de algo un lado, como un rss especial (una vez me toco un georss).un xml custom, o bien alguna tabla de otra base de datos con un formato propio; que luego deben dejar la informacion prolijita dentro de una instalacion de Drupal 6.x. incluyendo campos CCK
Este codigo puede ser utilizado dentro de un template o de un modulo.
Yo recomiendo hacer un pequeño modulo, que genere un path que al hacerle click corra nuestra rutina.
Primero hacemos el archivo .info:
miwrapper.info
O sea simplemente la información básica nada más.
El código clave para la inserción es simple y es el siguiente:
El contenido en cursiva es el que deben ajustar a sus necesidades.
Prestad atención: los campos CCK no siempre son iguales. Este caso es para tipico campo de texto. Como hay muchos formatos y modulos que amplian esta funcionalidad para cada caso hay que hacer mas research.
Un posible modulo seria:
miwrapper.php
Finalmente se activa el modulo y se puede correr el script en la url http://misitio.com/miwrapper
Este codigo puede ser utilizado dentro de un template o de un modulo.
Yo recomiendo hacer un pequeño modulo, que genere un path que al hacerle click corra nuestra rutina.
Primero hacemos el archivo .info:
miwrapper.info
; $Id: miwrapper.info,v 1.0.0.0 2010/11/15 04:40:41 lolcats Exp $
name = MiWrapper
description = Importador de informacion
core = 6.x
; Information added by drupal.org packaging script on2010-11-1
version = "6.x-1.12"
core = "6.x"
project = "miwrapper"
datestamp = "1243896498"O sea simplemente la información básica nada más.
El código clave para la inserción es simple y es el siguiente:
$node = new stdClass();
$node->title = $titulo;
$node->body = $contenido;
$node->type = 'letra';
$node->created = strtotime("now");
$node->changed = strtotime("now");
$node->status = 1;
$node->comment = 0;
$node->promote = 0;
$node->moderate = 0;
$node->sticky = 0;
$node->field_compositor[0]['value'] = $compositor;
$node->field_autor[0]['value'] = $autor;
$node = node_submit($node);
node_save($node);El contenido en cursiva es el que deben ajustar a sus necesidades.
Prestad atención: los campos CCK no siempre son iguales. Este caso es para tipico campo de texto. Como hay muchos formatos y modulos que amplian esta funcionalidad para cada caso hay que hacer mas research.
Un posible modulo seria:
miwrapper.php
<?php
function miwrapper_all() {
// Obtienes la infomacion que deseas ingresar. por ejemplo
$titulo = "Mi Cancion";
$contenido = "La guardia vieja replica";
$compositor = "Juan Perez";
$autor = "Pedro Lopez";
$node = new stdClass();
$node->title = $titulo;
$node->body = $contenido;
$node->type = 'letra';
$node->created = strtotime("now");
$node->changed = strtotime("now");
$node->status = 1;
$node->comment = 0;
$node->promote = 0;
$node->moderate = 0;
$node->sticky = 0;
$node->field_compositor[0]['value'] = $compositor;
$node->field_autor[0]['value'] = $autor;
// importante para setear valores por default
$node = node_submit($node);
node_save($node);
$page_content = 'Adding Node';
return $page_content;
}
function miwrapper_menu() {
$items = array();
$items['miwrapper'] = array(
'title' => 'MiWrap',
'page callback' => 'miwrapper_all',
'access arguments' => array('access miwrapper content'),
'type' => MENU_CALLBACK
);
return $items;
}
?>
Finalmente se activa el modulo y se puede correr el script en la url http://misitio.com/miwrapper
- Inicie sesión para enviar comentarios