【问题标题】:How to create a forum topic programmatically?如何以编程方式创建论坛主题?
【发布时间】:2011-03-16 06:04:09
【问题描述】:

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

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

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

请帮帮我,

谢谢, 埃德文

【问题讨论】:

    标签: drupal drupal-6 forum drupal-forms


    【解决方案1】:

    以编程方式创建新节点的快速、安全和简单的方法是使用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);
    ?>
    

    【讨论】:

      【解决方案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);
      

      创建主题 cmets

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          使用 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();
          

          【讨论】:

            猜你喜欢
            • 2011-12-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-08
            • 1970-01-01
            • 2021-10-04
            相关资源
            最近更新 更多