I just gone through how to create forums and containers programmatically with the below link
http://www.unibia.com/unibianet/drupal/how-create-drupal-forums-and-containers-programmatically
But never see any post(google) which create forum topic pro-grammatically, whether i should go with node_save() or any alternative.
please help me guys,
Thanks, Edvin
A quick, safe and easy way to create new nodes programmatically is to use node_save():
<?php
// Construct the new node object.
$node = new stdClass();
// Set the values for the node
$node->title = "My new forum topic";
$node->body = "The body of my forum topic.\n\nAdditional Information";
$node->type = 'forum'; // Your specified content type
$node->created = time();
$node->changed = $node->created;
$node->status = 1; // To have published, else use 0
$node->promote = 1; // If you want promoted to front page, else use 0
$node->sticky = 0;
$node->format = 1; // Filtered HTML
$node->uid = 1; // UID of content owner
$node->language = 'en';
// If known, the taxonomy TID values can be added as an array.
$node->taxonomy = array(2,3,1,);
node_save($node);
?>
Drupal 7 Examples :
To create new Forum
$forum = new stdClass();
$forum->name = uniqid();
$forum->description = uniqid();
$forum->parent = array(0);
$forum->weight = 0;
$forum->vid = variable_get('forum_nav_vocabulary', 0);
taxonomy_term_save($forum);
To create new Topic
$node = new stdClass();
// Set the values for the node
$node->title = "My new forum topic";
$node->body = "The body of my forum topic.\n\nAdditional Information";
$node->type = 'forum'; // Your specified content type
$node->created = time();
$node->changed = $node->created;
$node->status = 1; // To have published, else use 0
$node->comment = 2; // To have active, else use 0
$node->uid = 1; // UID of content owner
//Creates topic at the first "forum"
$node->forum_tid = reset(array_keys(taxonomy_term_load_multiple(array(),
array('vid' => variable_get('forum_nav_vocabulary', 0)))));
$node->language = LANGUAGE_NONE;
$node->taxonomy_forums[LANGUAGE_NONE][0]['tid'] = $node->forum_tid;
node_save($node);
To create topic comments
$comment = (object)array(
'nid' => $node->nid,
'pid' => 0,
'cid' => 0,
'uid' => 1,
'mail' => '',
'is_anonymous' => 0,
'homepage' => '',
'status' => COMMENT_PUBLISHED,
'subject' => 'subject test ' . uniqid(),
'language' => LANGUAGE_NONE,
'comment_body' => array(
LANGUAGE_NONE => array(
0 => array(
'value' => 'Comment Body ' . uniqid(),
'format' => 1
)
)
),
);
comment_submit($comment);
comment_save($comment);
A forum topic is really just a node, so node_save is the best option as all the needed hooks will be called.
Using D7 Entity API
global $user;
$options = array(
'type' => 'forum',
'uid' => $user->uid,
'status' => 1
);
$entity = entity_create('node', $options);
$wrapper = entity_metadata_wrapper('node', $entity);
$wrapper->title = 'Topic Title;
$wrapper->body = 'Topic Body;
$terms = taxonomy_get_term_by_name ('General discussion','forums'); //names of tid and vid
$wrapper->taxonomy_forums = reset($terms)->tid;
$wrapper->save();
来源:https://stackoverflow.com/questions/5321632/how-to-create-a-forum-topic-programmatically