You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Contentful条目最后一次发布的日期?

Contentful 跨状态获取条目最后一次发布日期的实现方案

原生字段的适用范围与局限

  • 条目处于已发布状态时,不建议用sys.updatedAt取发布时间:该字段会在草稿保存、未发布内容修改时同步更新,和实际发布时间可能存在偏差,准确的当前版本发布时间应取sys.publishedAt字段。
  • 条目被取消发布退回草稿状态后,原生sys.publishedAt字段会被自动置空,sys.updatedAt仅会记录取消发布、后续编辑草稿的操作时间,默认没有原生字段留存历史最后一次发布的时间,属于产品默认设计逻辑。

可落地的两种实现方案

方案1:Webhook 自动持久化最后发布时间(推荐)

这个方案维护成本最低,查询效率最高,适合绝大多数场景:

  • 在Contentful空间新建一个Date类型的自定义字段,字段名可设为lastEverPublishedAt,将字段权限设置为仅API可写,避免后台编辑误修改。
  • 配置两个触发事件的Webhook:
    • 绑定Entry.publish事件:条目每次发布时,Webhook接收事件payload中的sys.publishedAt值,自动写入对应条目的lastEverPublishedAt字段
    • 绑定Entry.unpublish事件:触发取消发布操作时,不对lastEverPublishedAt字段做任何更新,保留历史写入的最后一次发布时间
  • 后续无论条目处于发布状态还是草稿状态,直接读取lastEverPublishedAt字段即可拿到准确的最后一次发布日期。

方案2:通过Management API回溯历史快照

如果不想新增自定义字段、查询频率较低,可以用这个方案:

  • 调用Content Management API的条目快照接口,拉取目标条目的全量历史版本记录
  • 过滤版本列表中状态为已发布的快照记录,按版本号倒序取第一条,该条记录携带的sys.publishedAt就是条目历史上最后一次的发布时间
  • 该方案的缺点是接口调用成本高,条目版本越多查询速度越慢,不适合高频调用的业务场景。

注意:不要使用sys.firstPublishedAt字段实现该需求,这个字段仅记录条目第一次发布的时间,后续重新发布、取消发布操作都不会更新该字段值,无法匹配最后一次发布日期的取值要求。

内容的提问来源于stack exchange,提问作者Tsukuruu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:27:35