Pregunta

En un módulo personalizado para drupal 4.7 he hackeado un nodo de objeto y se la pasó a node_save($nodo) para crear nodos.Este hack parece no funcionar en drupal 6.Aunque estoy seguro de que este hack puede ser fijo tengo curiosidad por ver si hay una solución estándar para crear nodos sin necesidad de una forma.En este caso los datos se extraen de una costumbre alimentarse de otro sitio web.

¿Fue útil?

Solución

No sé de un API estándar para la creación de un nodo de manera pragmática.Pero esto es lo que he recogido a partir de la construcción de un módulo que haga lo que usted está tratando de hacer.

  1. Asegúrese de que los campos más importantes conjunto:uid, nombre, tipo, idioma, título, cuerpo del filtro (consulte la node_add() y node_form())
  2. Pasar el nodo a través del node_object_prepare() para otros módulos pueden añadir a los $nodo de objeto.

Otros consejos

Las mejores prácticas, método de hacer que esto suceda es utilizar drupal_execute.drupal_execute se ejecutará estándar de validación y básicos de las operaciones del nodo para que las cosas se comportan de la forma en que el sistema espera.drupal_execute tiene sus peculiaridades y es un poco menos intuitivo que simplemente un node_save, pero, en Drupal 6, puede utilizar drupal_execute de la siguiente manera.


$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');

$node = new stdClass();
// I don't believe anything is required here, though 
// fields did seem to be required in D5

drupal_execute($form_id, $form_state, $node);

node_save() todavía funciona muy bien en Drupal 6;usted necesitará un par de piezas específicas de datos en lugar de hacer el trabajo.

$node = new stdClass();
$node->type = 'story';
$node->title = 'This is a title';
$node->body = 'This is the body.';
$node->teaser = 'This is the teaser.';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;

node_save($node);

'Estado' y 'Promover' son fáciles de pasar por alto, si no aquellos, el nodo permanecerá inédito y unpromoted, y usted sólo tendrá que ver si vas a la administración de los contenidos de la pantalla.

Una respuesta más descubrí fue el uso de el ejemplo desde el blogapi módulo en el núcleo de drupal.El hecho de que está en el core me da un poco más de confianza en que se va a seguir trabajando en futuras versiones.

Hay algunas buenas respuestas anteriores, pero en el ejemplo específico de convertir un ingerido alimento elemento en un nodo, también se podría tomar el enfoque de la utilización de la simplefeed (módulo dehttp://wwww.drupal.org/project/simplefeed).Este módulo utiliza la simplepie motor para la ingesta de piensos y convierte los elementos individuales de cada uno de los piensos en los nodos.Me doy cuenta de que esto no abordan específicamente el tema de la creación de nodos de cron, pero podría ser una solución más fácil a su problema global.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top