草稿与发布(Draft & Publish)

页面摘要: 草稿与发布将草稿与线上条目分离,使编辑者能够在发布前暂存内容。本文档展示了如何为每个内容类型启用它,以及如何管理发布或取消发布操作。

草稿与发布(Draft & Publish)功能允许你管理内容的草稿。

  • Plan:免费功能
  • Role & permission:无
  • Activation:可用但默认禁用
  • Environment:在开发与生产环境中均可用

配置

配置该功能的路径: 内容类型构建器(Content Type Builder)

为了让你的内容类型可以在内容管理器(Content Manager)中通过草稿与发布进行管理,必须通过内容类型构建器启用该功能。草稿与发布可以为每个内容类型单独配置。

  1. 编辑你选择的已创建内容类型,或创建一个新的内容类型(更多信息请参阅 内容类型构建器 文档)。
  2. 进入 Advanced settings(高级设置) 标签页。
  3. 勾选 Draft & Publish 选项。
  4. 点击 Finish(完成) 按钮。

内容类型构建器的高级设置

保留属性名

当为内容类型启用草稿与发布时,属性名 status 由 Strapi 保留,不能用于用户定义的属性。内容类型构建器会阻止:

  • 向已启用草稿与发布的内容类型添加名为 status 的属性。
  • 在已经拥有 status 属性的内容类型上启用草稿与发布。

如果某个内容类型从 Strapi v4 项目继承了 status 属性,Strapi 5 会在启动时记录一条警告。在重新启用草稿与发布之前,请先重命名该属性,以避免 API 冲突。完整的操作步骤请参阅 迁移指南。

记录首次发布日期 (功能开关) {#recording-the-first-publication-date}

当启用此 future flag 时(请参阅 功能配置),Strapi 会自动为所有使用草稿与发布的内容类型添加一个 firstPublishedAt 属性。该属性保存条目首次发布的日期和时间,即使条目被取消发布并再次发布也绝不会改变。

:::caution 如果该功能开关之后被禁用,firstPublishedAt 属性及其存储的值将被移除。 :::

使用

启用草稿与发布后,内容管理器的编辑视图 会在界面顶部指示你的内容类型条目的当前状态。你的内容可以有以下 3 种状态:

Published(已发布) :内容之前已发布。没有待保存的草稿更改。

Modified(已修改) :内容之前已发布。你对草稿版本做了一些更改并保存了这些更改,但这些更改尚未发布。

Draft(草稿) :内容从未发布过。

当启用草稿与发布时,在 内容管理器 列表视图中,你可以使用 Filters(过滤器) 按钮按状态过滤条目。你也可以通过点击列表视图中的 Status(状态) 列标题,按发布状态对条目进行排序。

处理草稿

路径: 内容管理器,你的内容类型的编辑视图

在编辑文档时,你可以看到 2 个标签页:

  • Draft(草稿) 标签页是你可以编辑内容的地方。
  • Published(已发布) 标签页是一个只读标签页,其中所有字段的编辑都被禁用。Published(已发布) 标签页仅用于显示已发布版本中字段的内容。

编辑草稿版本

默认情况下,每个新创建的内容都是草稿。草稿可以随意修改和保存,使用界面右侧 Entry(条目) 框中的 Save(保存) 按钮,直到它们准备好发布。

一旦你对草稿做了更改,你有以下 3 种可能选项,这些都可在界面右侧的 Entry(条目) 框中获得:

  • Publish(发布) 你的文档(请参阅 发布草稿),
  • Save(保存) 你的草稿以便日后取用,
  • 或放弃更改,点击 并选择 Discard changes(放弃更改)。

发布草稿

路径: 内容管理器,你的内容类型的编辑视图

要发布草稿,请点击界面右侧 Entry(条目) 框中的 Publish(发布) 按钮。

草稿发布后:

  • Draft(草稿) 和 Published(已发布) 标签页的内容应该完全一致(但 Published(已发布) 标签页仍然只读)。
  • 文档标题下方的状态将切换为“Published(已发布)”。

:::caution 在发布草稿之前,请确保它与其他未发布的内容没有关系,否则部分内容可能无法通过 API 访问。 :::

当文档同时拥有草稿版本和已发布版本时,已发布版本可以在 Published(已发布) 标签页中找到。如果文档只有草稿版本,你无法点击 Published(已发布) 标签页。

编辑已发布版本

TIP

要安排发布(即在给定日期和时间将草稿转换为已发布条目),你可以将其纳入一个 release(发布)并安排该 release 的发布。更多信息请参阅 Releases 功能 文档。

取消发布内容

路径: 内容管理器,你的内容类型的编辑视图

要取消发布之前已发布的内容:在 Draft(草稿) 标签页中,点击界面右侧 Entry(条目) 框中的 并选择 Unpublish(取消发布) 按钮。

如果文档的草稿版本包含与已发布版本不同的内容,你可以在取消发布时决定如何处理这两部分内容:

  1. 在 Draft(草稿) 标签页中,点击界面右侧 Entry(条目) 框中的 并选择 Unpublish(取消发布) 按钮。
  2. 在打开的确认对话框中,你可以选择:
    • Unpublish and keep last draft(取消发布并保留最后的草稿),这样你在 Draft(草稿) 标签页中当前拥有的所有内容都会被保留,但 Published(已发布) 标签页中的所有内容将彻底消失
    • Unpublish and replace last draft(取消发布并替换最后的草稿),丢弃 Draft(草稿) 标签页中的任何现有内容,并用 Published(已发布) 标签页中所有字段的内容替换它
  3. 点击 Confirm(确认)。所需的更改将应用到 Draft(草稿) 和 Published(已发布) 标签页,条目的新状态也会反映在条目标题下方。

取消发布文档

批量操作

路径: 内容管理器,你的内容类型的列表视图

从 内容管理器的列表视图 中选择多个条目,会显示额外的按钮,用于同时发布或取消发布多个条目。这就是所谓的“批量发布/取消发布(bulk publishing/unpublishing)”。

:::caution 如果安装了 国际化功能,批量发布/取消发布操作仅适用于当前所选的语言区域。 :::

取消发布文档

批量发布草稿

要同时发布多个条目:

  1. 从内容管理器的列表视图中,通过勾选条目记录左侧的框来选择要发布的条目。
  2. 点击表格表头上方位于的 Publish(发布) 按钮。
  3. 在 Publish entries(发布条目) 对话框中,检查所选条目的列表及其状态:
    • Ready to publish(准备发布):该条目可以发布
    • “[字段名] is required([字段名]为必填)”、“[字段名] is too short([字段名]过短)”或“[字段名] is too long([字段名]过长)”:该条目由于红色警告消息中所述的问题而无法发布。
  4. (可选)如果你的某些条目具有 状态,请点击 编辑按钮修复问题,直到所有条目都达到 Ready to publish(准备发布)状态。请注意,当你修复各个条目的问题时,需要点击 Refresh(刷新) 按钮来更新 Publish entries(发布条目) 对话框。
  5. 点击 Publish(发布) 按钮。
  6. 在确认对话框中,再次点击 Publish(发布) 按钮确认你的选择。

批量取消发布内容

要同时取消发布多个条目:

  1. 从内容管理器的列表视图中,通过勾选条目记录左侧的框来选择要取消发布的条目。
  2. 点击表格表头上方位于的 Unpublish(取消发布) 按钮。
  3. 在确认对话框中,再次点击 Unpublish(取消发布) 按钮确认你的选择。

与 API 配合使用

可以使用 status 参数通过 Strapi 的 Content API 提供的各种前端 API 来请求、创建、更新和删除草稿或已发布的内容。要按文档的草稿版本和已发布版本之间的关系(例如从未发布或已修改的文档)进行查询,请使用 publicationFilter 参数(REST 和 GraphQL),或使用等价的文档服务(Document Service)API 选项。

在 Strapi 的后端服务器上,文档服务(Document Service)API 也可以查询和管理草稿与已发布的内容: