function amnode_save(&$node) { //定义存储函数,如果有相同asin码就更新,没有就插入。
node_invoke_nodeapi($node, 'presave');
global $user;
$node->is_new = FALSE;
$result = db_query('SELECT `nid`,`field_asin_value` FROM `content_type_story`');
while($data = db_fetch_object($result)){
if ($data->field_asin_value == $node->field_asin['0']['value']) {
$node->is_new = TRUE;
$node->vid = $data->nid;
$node->nid = $data->nid;
}else {
if (empty($node->log)) {
unset($node->log);
}
}
}
if (empty($node->created)) {
$node->created = time();
}
$node->changed = time();
$node->timestamp = time();
$node->format = isset($node->format) ? $node->format : FILTER_FORMAT_DEFAULT;
if ($node->is_new != 1) {
echo 'aaa';
_node_save_revision($node, $user->uid);
drupal_write_record('node', $node);
db_query('UPDATE {node_revisions} SET nid = %d WHERE vid = %d', $node->nid, $node->vid);
$op = 'insert';
}
else {
echo 'bbb';
drupal_write_record('node', $node, 'nid');
if (!empty($node->revision)) {
_node_save_revision($node, $user->uid);
db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
}
else {
_node_save_revision($node, $user->uid, 'vid');
}
$op = 'update';
}
node_invoke($node, $op);
node_invoke_nodeapi($node, $op);
node_access_acquire_grants($node);
cache_clear_all();
}
这里查询了cck的所有属性,如果有相同的就更新,没有就插入。