我想要创建一些具有特定到期日期的页面(试图应用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;
}
}