taitava / silverstripe-autoarchivable
一个库,当页面过期时,会自动将其移动到特定的存档页面。
Requires
- silverstripe/framework: ~3.1
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的小型自由职业项目:)
如果您有任何问题,请随时联系。