axllent/silverstripe-version-truncator

自动从数据库中删除旧版本的Silverstripe记录

安装 52,542

依赖关系: 3

建议者: 1

安全性: 0

星标: 34

关注者: 5

分支: 11

开放问题: 0

类型:silverstripe-vendormodule

3.1.0 2023-12-01 10:14 UTC

This package is auto-updated.

Last update: 2024-08-30 01:12:11 UTC


README

Silverstripe的一个扩展,可以在发布记录时自动从数据库中删除旧版本的DataObject记录,遵循预定义的保留策略(见配置)。

当编辑记录(如页面)时,直到发布之前都不会进行更改,因此可能会有50个草稿版本。当您发布页面时,模块会修剪(默认情况下)所有草稿副本,仅保留最后10个发布的版本(可配置)。

功能

  • 发布时删除除最后XX个发布版本之外的所有DataObject版本
  • 发布时删除除最后YY个草稿版本之外的所有DataObject版本
  • 可选地保留URLSegment已更改的旧SiteTree对象(以保留重定向)

任务

模块向中添加了三个手动任务:

  1. 强制在整个数据库上运行 - 通常不需要此任务,除非您刚刚安装了模块并希望整理,或者更改了DataObject配置。
  2. Silverstripe在文件被物理删除后不会删除任何文件记录(可能是因为与内部文件链接相关的立即删除功能)。在这种情况下,保留这些记录似乎没有意义,因此此任务将删除与已删除文件/文件夹相关的所有记录。
  3. 强制“重置”,仅保留每个当前发布的DataObject的最新发布版本(无论策略如何)。未发布/修改的DataObjects不受影响。
  4. 删除所有归档的DataObjects。

可以通过/dev/tasks/TruncateVersionsTask运行这些任务。

需求

  • Silverstripe ^4.5 || ^5.0

安装

composer require axllent/silverstripe-version-truncator

配置

配置是可选的(见默认配置),但是您可以创建一个YML文件(例如:app/_config/version-truncator.yml

MyCustomObject:
  keep_versions: 5
  keep_drafts: 5

要为特定DataObject跳过修剪,请设置该对象类的keep_versions: 0

要覆盖全局默认值,请参阅_config/extension.yml,例如

SilverStripe\CMS\Model\SiteTree:
  keep_versions: 20
  keep_drafts: 10

默认配置

SiteTree(及其扩展类,例如:页面等)

发布时,保留最后10个发布的版本,并删除所有草稿副本。唯一的例外是如果URLSegment和/或ParentID已更改,在这种情况下,模块将为每个不同的URLSegment保留单个记录,以允许自动重定向。

所有其他DataObjects

对于所有其他版本化的DataObjects,仅保留最新发布的版本,并删除所有草稿。这可以根据每个DataObject进行调整,或全局调整(见上述内容)。