【问题标题】:Recipe for adding Drupal node records添加 Drupal 节点记录的方法
【发布时间】:2010-03-26 18:18:07
【问题描述】:

我正在寻找添加 Drupal 节点记录的方法。 我已经确定了三个表。

node_revisions
nid=249  - vid + 1?
vid=248  - auto-increment

node:
nid=250  - vid + 1?
vid=249  - auto-increment

content_type_my_content
vid=248  - from node_revisions table?
nid=249  - from node table? 

我在正确的轨道上吗? 是否有一些辅助功能?

【问题讨论】:

    标签: indexing drupal drupal-nodes


    【解决方案1】:

    如果您希望以编程方式创建节点,请使用 Drupal API。

    首先创建一个 $node 对象。填写标题、类型、状态、正文以及任何 CCK 字段。最后,调用 node_save($node);。

    node_save 将保存您的节点对象并进行必要的数据库工作。

    看看这个:

    http://api.drupal.org/api/function/node_save/6

    http://mediumexposure.com/how-build-node-drupal-programmatically/

    查看每种内容类型作为字段的最简单方法是创建一个节点(例如,Page),然后使用 var_dump() 查看节点的内容。这将显示您需要在节点对象创建脚本中使用的每个字段。

    有些人会说您应该创建一个表单数组,并在其上调用 drupal_execute() 以便在将其保存到数据库之前执行验证。无论哪种方式都可以。

    【讨论】:

      【解决方案2】:

      Kevin - 在您的帮助下,我取得了不错的进展。 现在正在填充节点和 CCK 字段。

      位置(经度/纬度)已填充,但未显示在查看屏幕上。 未填充复选框。

      global $user;
      $newnode = new stdClass();
      $newnode->title = 'New node title';
      $newnode->body = "this is a new node, created by import function";
      $newnode->uid = $user->uid;
      $newnode->type = 'items';
      $newnode->status = 1;
      $newnode->promote = 0;
      
      // CCK fields
      $newnode->field_myfield1[0]['value'] = 'test 1';
      $newnode->field_myfield2[0]['value'] = 'test 2';
      $newnode->field_mycheckbox[0]['value'] =  1;
      
      // longitude, lalitude
      // $newnode->locations[0]['lid'] = ?;
      $newnode->locations[0]['street'] = 'xx';
      $newnode->locations[0]['city']   = 'xx';
      $newnode->locations[0]['province']  = 'xx'; 
      $newnode->locations[0]['postal_code']  = 'xx'; 
      $newnode->locations[0]['latitude']  = 0; 
      $newnode->locations[0]['longitude'] = 0; 
      
      
      $newnode = node_submit($newnode);
      node_save($newnode);
      content_insert($newnode); 
      

      【讨论】:

      • 嗯。如果您手动填写其中一个节点并将其转储怎么办?那些是字段吗?
      【解决方案3】:

      好的。这是完整的食谱。 Drupal 自动完成其余的工作。

      global $user;
      // Node fields
      $newnode = new stdClass();
      $newnode->title =  $data[0];
      $newnode->body =  $data[1];
      $newnode->uid = $user->uid;
      $newnode->type = 'mytype';
      $newnode->status = 1;
      $newnode->promote = 0;
      
      // CCK fields
      $newnode->field_myfield1[0]['value'] =  $something;
      $newnode->field_myfield2[0]['value'] =   $something;
      $newnode->field_my_checkbox[0]['value'] =  $something;
      
      // longitude, latitude
      $newnode->field_loc_latitude[0]['street'] =  $something; 
      $newnode->field_loc_latitude[0]['city'] =   $something;
      $newnode->field_loc_latitude[0]['province'] =  $something;
      $newnode->field_loc_latitude[0]['postal_code'] =  $something;
      $newnode->field_loc_latitude[0]['latitude'] =  '';
      $newnode->field_loc_latitude[0]['longitude'] =  '';
      
      $newnode = node_submit($newnode);
      node_save($newnode);
      content_insert($newnode); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        相关资源
        最近更新 更多