Silverstripe,隐藏一页后的特定日期,在未来


Silverstripe, hide a page after specific date in the future

我想要创建一些具有特定到期日期的页面(试图应用silverstripe文档中的日期选择器对我不起作用)。那个日期应该在未来,在那个日期,我想隐藏的文章。

看看silverstripe/advancedworkflow模块——它支持禁运/到期日期(以及其他事项)。

下面是一个使用CMS控制的ExpiryDate来控制是否可以查看页面的简单实现。此解决方案适用于Silverstripe 3.1。

class Page extends SiteTree {
    private static $db = array(
        'ExpiryDate' => 'SS_Datetime'
    );
    public function canView($member = null) {
        if ($this->ExpiryDate) {
            if ($this->obj('ExpiryDate')->InPast()) {
                return false;
            }
        }
        return parent::canView($member);
    }
    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab('Root.Main', $expiryDateField = Datetimefield::create('ExpiryDate', 'Page Expiry Date'), 'Content');
        $expiryDateField->getDateField()->setConfig('showcalendar', true);
        $expiryDateField->getTimeField()->setConfig('timeformat', 'HH:mm:ss');

        return $fields;
    }
}