3

我刚刚通过以下链接了解了如何以编程方式创建论坛和容器

http://www.unibia.com/unibianet/drupal/how-create-drupal-forums-and-containers-programmatically

但是从来没有看到任何以编程方式创建论坛主题的帖子(谷歌),无论我应该使用 node_save() 还是任何替代方案。

请帮帮我,伙计们,

谢谢,埃德文

4

4 回答 4

4

以编程方式创建新节点的一种快速、安全且简单的方法是使用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);
?>
于 2011-03-16T07:47:57.787 回答
2

Drupal 7 示例:

创建新论坛

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

创建新主题

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

创建主题评论

    $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);
于 2014-05-16T16:53:57.113 回答
1

论坛主题实际上只是一个节点,因此 node_save 是最好的选择,因为所有需要的钩子都会被调用。

于 2011-03-16T07:47:43.430 回答
0

使用 D7 实体 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();
于 2015-11-29T02:36:12.923 回答