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@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