[development] what's the best way to create nodes from code?

Domenic Santangelo domenic at workhabit.com
Fri Oct 30 18:44:05 UTC 2009


On Oct 30, 2009, at 11:34 AM, Emma Irwin wrote:

> Isn't there a need for node_submit() as well before node_save(); ?

In D6, yes. Also to clarify Alex's point, a pure node_submit() +  
node_save() is indeed faster -- because it doesn't hit any hooks. The  
"proper" way to save a node programmatically is in the comments for  
drupal_execute():

* // Create a new node
  * $form_state = array();
  * module_load_include('inc', 'node', 'node.pages');
  * $node = array('type' => 'story');
  * $form_state['values']['title'] = 'My node';
  * $form_state['values']['body'] = 'This is the body text!';
  * $form_state['values']['name'] = 'robo-user';
  * $form_state['values']['op'] = t('Save');
  * drupal_execute('story_node_form', $form_state, (object)$node);
  */


>
> On Fri, Oct 30, 2009 at 9:52 AM, Alex Barth  
> <alex at developmentseed.org> wrote:
>
> If speed is not an issue, use drupal_execute(). You're on the safe  
> side with it, you don't need to worry about hook_nodeapi() /  
> hook_form_alter() implementations of the moduls in use.
>
> Otherwise, I settled for:
>
> $node = new stdClass();
> node_object_prepare($node);
> // Add stuff.
> $node->title = 'my title';
> node_save($node);
>
> On that note, I urge all module developers to not rely on form  
> submission in their hook_nodeapi() implementations. Your module's  
> node api implementation shouldn't break when a node is being created  
> without using the way through the form api.
>
>
> On Oct 30, 2009, at 11:53 AM, Zhang Xiao wrote:
>
> Hi,
>
> I have a batch of nodes need to be created from code, which function  
> should i use as an entry?
>
> thanks!
>
> Alex Barth
> http://www.developmentseed.org/blog
> tel (202) 250-3633
>

--
Domenic Santangelo
WorkHabit, Inc.
[Direct  ]530-902-2576
[Office  ]866-WorkHabit
[Skype   ]dsantangelo
[Freenode]entendu @ #drupal



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20091030/8aa62988/attachment-0001.html 


More information about the development mailing list