Drupal 6 Drupal 6-保存节点时是否需要node_submit()?

Drupal 6 Drupal 6-保存节点时是否需要node_submit()?,drupal-6,saving-data,Drupal 6,Saving Data,我试图修复一些遗留代码中的问题,该代码生成自定义内容类型为“show”的节点,但前提是相同类型和标题的节点不存在。代码如下所示: $program = node_load(array('title' => $xml_node->program_title, 'type' => 'show')); if (!$program) { $program = new stdClass(); $program->

我试图修复一些遗留代码中的问题,该代码生成自定义内容类型为“show”的节点,但前提是相同类型和标题的节点不存在。代码如下所示:

        $program = node_load(array('title' => $xml_node->program_title, 'type' => 'show'));
        if (!$program) {
          $program = new stdClass();
          $program->type = 'show';
...
          node_submit($program);
          node_save($program);
        }
所以,脚本首先尝试加载具有特定标题的“show”内容类型中的节点,如果失败,它将创建一个节点

问题是,当它在短时间内(在循环内)多次被调用时,它会创建双节点。就像在同一秒钟内制作的两个同名节目

有什么问题吗


我正在寻找如何在Drupal6中保存节点的示例。在某些情况下,它们甚至不调用node_submit()。需要那个电话吗?如果是这样的话,我是否必须将返回的节点_submit()传递给节点_save()?或者可能是由于某种原因,node_load()无法加载现有节点?可能需要清除一些缓存或其他什么?

据我所知,使用node\u save以编程方式创建节点。无需使用node\u submit()函数。 创建双节点的原因是node_load()函数在完成对node_load()缓存的更新之前启动。尝试添加:

node_load(FALSE, NULL, TRUE);
节点后保存($program)。 这将清除节点\u load()缓存

见:

参见