内容暂存.

Learn DXPR BuilderManage the siteNaar productie

内容暂存是指在访客看到之前,先构建并检查 DXPR Builder 页面。有两种做法:在单独的暂存网站上构建,再把内容移到生产站;或在同一个网站上用 Drupal 的修订和 Content Moderation。本页介绍这两种做法,并准确说明构建器保存对修订和审核状态的影响,因为这决定了哪种做法适合您。

构建器保存做了什么

编辑器中的每次保存都会执行以下步骤:

  1. 加载页面的 default revision,使用正在编辑的语言。
  2. 检查当前用户是否有权更新该页面。
  3. 将新的 HTML 写入字段。
  4. 如果该实体类型支持修订,则创建新修订并将其设为默认修订。当前用户成为其作者,日志消息为 Saved with DXPR builder,时间为请求时间。
  5. 解除该页面和修订的编辑锁定,然后保存页面。

保存背后的请求见 API 端点。

因此,在节点或 Drag and Drop Block 上的每次保存都会创建新修订,无论内容类型是否勾选了 Create new revision,Revisions 选项卡都会用构建器的日志消息列出每次保存。Drush dxb:page:update 也会创建修订,日志消息为 Updated via dxb:page:update Drush command.

构建器没有审核状态的控件,也从不设置 moderation_state。当内容类型启用了 Content Moderation 时,新修订保留构建器加载的修订的状态,Content Moderation 在保存时应用该状态的规则:

  • 已发布的页面保持发布,新修订立即上线。
  • Draft 中的未发布页面仍留在 Draft。
  • 有已发布默认修订、又有更新的待定草稿的页面是个问题:构建器加载的是已发布修订,而不是草稿,因此保存会根据已发布内容创建新的已发布修订,草稿的更改会被搁置。

请用节点编辑表单更改状态。要在同一个网站内走检查流程,请让页面在编辑人员用构建器编辑期间保持未发布(Draft),检查完成后再通过表单发布。

暂存网站流程

单独的暂存网站避开了上述审核限制,还能让相关方检查真实页面。

  1. 编辑人员在暂存网站上构建和修改页面。
  2. 检查人员在那里批准。
  3. 用下文方法之一将批准的内容移到生产站。
  4. 以匿名访客身份在生产站上检查页面。

复制数据库

将数据库从暂存站整体复制到生产站:

drush sql:sync @staging @production

这会替换生产站的所有内容,因此请先备份生产站,并预计丢失复制后在生产站上所做的更改。文件不包含在内;请按下文所述同步文件。

选择性导出内容

要移动单个页面,请用 Default Content 等模块导出节点,包括页面引用的媒体和文件,再导入生产站。构建器将其 HTML 存放在文本字段中,因此字段值随节点一起迁移。HTML 中的图片路径指向 sites/default/files/dxpr_builder_images,因此也要复制这些文件。

仅部署配置

如果您构建的是可重复使用的布局,而不是具体页面:

  1. 在暂存站上,用容器栏的 More > Save as template 保存布局。这会创建一个用户模板。

  2. 前往 DXPR Studio > DXPR Builder > User Templates,在该模板的操作中选择 Create page template。

  3. 导出配置:

    drush config:export
    
  4. 部署 dxpr_builder.page_template.*.yml 文件并在生产站上导入:

    drush config:import
    
  5. 编辑人员在生产站上从该模板开始新建页面。页面模板出现在空容器中。

文件同步

构建器的上传文件存放在网站默认文件目录的 dxpr_builder_images、dxpr_builder_videos 和 dxpr_builder_files 中。请随内容一起同步它们:

rsync -avz staging:/path/to/files/ production:/path/to/files/

在两个环境都挂载 S3 等共享文件存储,可省去这一步。

修订与回滚

因为每次保存都是一个修订,所以回滚是 Drupal 操作:

  1. 打开页面的 Revisions 选项卡。
  2. 找到不需要的保存之前的修订;每次构建器保存都显示 Saved with DXPR builder。
  3. 点击 Revert。

还原会创建另一个修订,因此历史记录保持完整。

编辑锁定

当编辑人员首次点击进入容器时,编辑器发送 dxpr_toggle_content_lock 请求到 /dxpr_builder/ajax,dxpr_lock 表记录实体、修订、语言和用户。当另一位编辑人员打开该页面时,编辑器查询 dxpr_content_lock_status,隐藏容器控件,并显示带锁定者姓名的 Locked 按钮。保存会删除该行。另一位编辑人员也可以点击 Locked 并确认,以覆盖锁定;从那时起,最后保存者胜出。

接下来做什么?