Drupal 7:节点插入/节点更新之间的区别

时间:2013-07-12 12:46:17

标签: drupal drupal-7 nodes updates insertion

我已经创建了一个模块来获取服务器信息。 所以我创建了一个特定的内容类型。要收集所有数据,一个字段需要主机名。

我使用函数hook_node_presave()在我的节点中添加CPU,RAM等信息。因此,当我创建一个新节点时,我手动指定名称,drupal调用函数hook_node_presave(),它会自动在我的节点中插入其他信息。

我还设置了一个cron来定期更新每个节点信息。为此,我使用hook_cron()。我设法通过node_load()加载每个节点来更新它们,但是当我想使用node_save() Drupal保存它们时,逻辑上hook_node_presave() ...但是不要这样发生:因为这个功能再次更新信息!

如何区分hook_node_presave()中的新节点更新节点? 我可以打电话给哪个功能来避免这个问题?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

只需检查节点对象上的is_new成员或是否存在nid

function MYMODULE_node_presave($node) {
  if ($node->is_new) {
    // ...
  }

  // Equivalent to
  if (empty($node->nid)) {
    // ...
  }
}

根据user_save()文档:

  

<强>参数

     

$ node:要保存的$ node对象。如果省略$ node-&gt; nid(或$ node-&gt; is_new为TRUE),则会添加一个新节点。