gpt4 book ai didi

drupal - 每次保存节点后如何在drupal中执行操作?

转载 作者:行者123 更新时间:2023-12-04 13:55:31 27 4
gpt4 key购买 nike

我正在 Drupal 中开发一个 Action ,它应该在保存节点后激活,使用“触发器:保存更新的帖子后”触发器将内容导出到 XML(其中包括来自刚刚保存的节点的数据)。

不幸的是,此操作实际上发生在将最近保存的帖子中的信息保存到数据库之前。 IE。稍后查看 XML 时,我发现我所做的最新更改并未包含在内。编辑不同节点后保存将恢复以前丢失的数据。

如何在保存过程完成后触发我的操作?

最佳答案

无论您是使用触发器还是 Mike Munroes 通过 hook_nodeapi() 提出的建议,在这种情况下都有一个常见的陷阱。 (+1):

只要您的导出逻辑在处理更新的同一页面周期上运行,并且它使用 node_load()获取节点数据, node_load()可能会返回更新之前节点的静态缓存版本,该版本尚不包含更改 .如果这是您的问题,您可以通过两种方式解决它:

  • 通过传递 TRUE 强制重置静态节点缓存作为 node_load() 的第三个参数.这将确保节点从数据库中新鲜填充(以一些额外的 db 查询为代价,因此请注意潜在的性能影响)。
  • 如果您要去 hook_nodeapi()路线,您可以避免需要调用node_load()如果您通过 $node对象可直接用于导出函数,因为它将是更新状态的表示。
  • 关于drupal - 每次保存节点后如何在drupal中执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784580/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com