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

时间:2014-10-30 09:01:10

标签: drupal-6 saving-data

我试图修复一些遗留代码中的问题,这些代码生成自定义内容类型的节点" 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'具有特定标题的内容类型,如果失败则创建一个。

问题是,当它在短时间内(循环内)被多次调用时,它会创建双节点。就像在同一秒创建相同标题的2个节目一样?!?

那里可能出现什么问题?

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

1 个答案:

答案 0 :(得分:1)

据我所知并使用node_save以编程方式创建节点,不需要node_submit()函数。 创建双节点的原因是在完成对node_load()缓存的更新之前触发了node_load()函数。尝试添加:

node_load(FALSE, NULL, TRUE);
在node_save($ program)之后

。 这将清除node_load()缓存。

请参阅: https://api.drupal.org/comment/12084#comment-12084