我正在寻找添加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? 我在正确的轨道上吗?有没有一些帮助函数来解决这个问题呢?
发布于 2010-03-27 02:21:04
如果您希望以编程方式创建节点,请使用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/
查看每种类型的内容类型作为字段的最简单方法是创建一个节点(例如,页面),然后使用var_dump()查看节点的内容。这将向您显示需要在节点对象创建脚本中使用的每个字段。
有些人会说,您应该创建一个表单数组,并对其调用drupal_execute(),以便在将其保存到数据库之前执行验证。无论哪种方式都可以。
发布于 2010-03-27 04:46:48
凯文-在你的帮助下,我取得了很好的进步。现在正在填充节点和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); 发布于 2010-03-27 09:12:09
好的。这是完整的食谱。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); https://stackoverflow.com/questions/2525696
复制相似问题