3

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

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

我还设置了一个 cron 来定期更新每个节点信息。为此,我使用hook_cron(). 由于 , 更新它们,我设法加载每个节点node_load(),但是当我想使用node_save()Drupal 调用逻辑地保存它们时hook_node_presave()......但不希望这种情况发生:因为这个函数再次更新信息!

如何区分新节点更新节点hook_node_presave()?否则我可以调用哪个函数来避免这个问题?

谢谢你的帮助

4

1 回答 1

3

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

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

根据user_save()文档:

参数

$node:要保存的 $node 对象。如果 $node->nid 被省略(或 ​​$node->is_new 为 TRUE),将添加一个新节点。

于 2013-07-12T14:01:24.527 回答