Crear nodos via código en Drupal

Nov 16 2010

Voy escribir y dejar asentado este pequeño pedazo de código, 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 (un georss), un xml custom, o bien alguna tabla de otra base de datos con un formato propio; que luego deben dejar la información prolijita dentro de una instalación 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

; $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


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
Post original

UGG boots günstig UGG boots

UGG boots günstig UGG boots günstig
ugg boots UGG boots günstig
UGG boots günstig UGG boots günstig
ugg boots UGG boots günstig
UGG boots günstig UGG boots günstig
ugg boots sale UGG boots sale

monster beatsmonster beats kopfhörer
monster beats by dr. dremonster beats kopfhörer
clarisonic mia clarisonic mia
Sac A Main Sac A Main
Sac A Main Pas Cher Sac A Main Pas Cher

beats by dre beats by dre
monster beats monster beats
Beats By Dre
Beats By Dre Studio
Beats By Dre
Beats By Dre Solo
Beats By Dre Solo HD

Beats By Dre Beats By Dr Dre
Beats By Dre Headphones Cheap Beats By Dre Headphones
Cheap Beats By Dre Headphones Cheap Beats By Dre Headphones
beats by dre wireless Beats By Dr Dre
Monster Beats Studio Beats By Dr Dre

Cheap Louis Vuitton bags
Louis Vuitton bags
Louis Vuitton UK
cheap replica louis vuitton bags uk
louis vuitton london
louis vuitton uk online shopping

NewMessage

NewMessage

NewMessage