taitava/silverstripe-autoarchivable

一个库,当页面过期时,会自动将其移动到特定的存档页面。

安装: 5

依赖项: 0

建议者: 0

安全: 0

星星: 1

关注者: 2

分支: 1

开放问题: 1

类型:silverstripe-module

dev-master 2016-08-02 18:56 UTC

This package is auto-updated.

Last update: 2024-09-08 08:11:20 UTC


README

此模块提供了一种定义页面自动存档日期的方法。存档的意思是将页面移动到网站中的另一个位置,同时仍然保持其已发布状态。

该模块不会限制您只能使用某些特定的类或从模块定义的类继承。相反,模块提供了DataExtensions,您将使用这些扩展来装饰自己的类,无论是Page还是SiteTree等。或者更好的是,创建新的类,如ArchivablePage和ArchiveDestination,这两个类都扩展了Page或SiteTree。但最终:您来决定。唯一的限制是您的类必须扩展SiteTree - 该模块不会在其他DataObjects上工作!(如果有人想取消这个限制,我会很乐意审查一个关于这个的pull request! :) )

主要功能

  • 为页面指定一个移动到存档页面的日期
  • 开关复选框,以便您可以选择暂时禁用特定页面的存档
  • 下拉列表,用于选择特定页面的目标位置
  • 或者,您可以使用自动模式来决定将多个页面存档的位置,即使您有多个目标。
  • "现在存档"复选框,用于永久地为特定页面进行存档,无需再玩拖放错误的地点再试一次。
  • 例如使用cron,silverstripe-labs/silverstripe-crontask,URL或自定义cli脚本来自动化模块。

动手操作

首先,您只需要几个新的SiteTree类

class ArchivablePage extends Page
{
	private static $extensions = array('AutoArchivableExtension');
}

class ArchivablePage_Controller extends Page_Controller
{
}

class ArchiveDestination extends Page
{
	private static $extensions = array('AutoArchiveDestination');
}

class ArchiveDestination_Controller extends Page_Controller
{
}

让我们看看这里有什么... ArchivablePage 是一个可以自动移动到某处的页面类。拥有这些页面自己的类的原因可能是,您可能不希望所有页面都有自动存档选项来杂乱CMS,您只需要为一些页面提供。关于这个类没有更多要说的。当然,您可以将扩展应用到您已经存在的某个类上,当然也可以在YAML中定义扩展。这只是一个整洁的方式来展示设置。

然后我们需要一个实际移动东西的地方,当我们最终到达那个点时。这就是ArchiveDestination的作用。系统简单且灵活,但希望不是复杂的。最简单的网站会使用这个类的一个页面,并将其放置在页面树中的任何需要的地方。当需要这样做时,模块会找到它并将可存档页面移动到其下。

如果您需要多个目标,也可以这样做。一些页面将在这里,一些页面在那里。首先,您有一个选择,可以指定特定可存档页面将移动到哪个目标页面,这对于精确控制来说是个好主意。

但是,如果您有很多可存档的页面,您不希望手动为每一个定义目标位置。在这种情况下,您可以保留目标选项为默认值,即自动模式。自动模式会查看可存档页面的同级页面,看看其中是否有目标页面。如果有,它将移动到那里。如果没有,它将查看可存档页面的父级同级页面、祖父级同级页面等。如果在遍历页面树时找不到任何内容,它最终将尝试找到目标页面,无论其位置如何。如果找到多个,它将使用第一个。很简单。也许不是所有情况下都完美,但如果有想法,请分享!:)

最后,还有情况下可存档页面不能被移动

  • 没有找到目标页面
  • 找到了目标页面,但该页面不接受可存档页面作为其新子页面。

路线图 & 稳定性

该模块目前的状态仍然是开发中。我认为功能已经到位,目前我脑海中没有需要添加到这个模块的东西。但是,由于模块测试得不是很好,功能可能存在bug。如果测试进展顺利,我可以轻松地将版本号提升到1.0.0并发布一个稳定版本。

最后的代码片段

模块不是自动自动的,您首先需要手动做些事情。例如,将以下内容放入您的crontab

0 0 * * * php framework/cli-script.php dev/tasks/AutoArchiveTask

这将使您的服务器在午夜执行存档操作。

或者,要手动测试,只需访问:www.yoursite.com/dev/tasks/AutoArchiveTask

作者 & 许可证

姓名:Jarkko Linnanvirta 公司:IT-Palvelu Taitava 联系方式:posti taitavasti fi(将空格替换为at和点) 网页:http://taitavasti.fi(很遗憾,只有芬兰语:D) 许可证:MIT 可能适用于使用SilverStripe的小型自由职业项目:)

如果您有任何问题,请随时联系。