如何解决如何在单独的博客上禁用 Silverstripe 元素块?
我们正在开发一个使用 Elemental Module 来布局内容的 Silverstripe 项目。
该项目还使用博客模块,博客用于网站的两个部分 - 工作组合和标准博客。
实现这一目标的最佳方法是什么?
我们是否应该将 Blog
& BlogPost
扩展到新对象 Portfolio
& PortfolioItem
以区分两种不同的行为?
if ($this->BlogType == 'portfolio'){
// enable Elemental
} else {
// disable Elemental
}
最后,我们如何在特定页面上禁用 Elemental?它在文档中并不明显。
解决方法
这是我们的解决方案 - 使用 includeElemental
方法根据具体情况禁用/启用 Elemental。
class BlogPostExtension extends DataExtension
{
public function updateCMSFields(FieldList $fields){
$fields->insertBefore(new
DropdownField("LayoutIndex","Layout",["Portfolio","Blog"]),"Title");
}
public function includeElemental(){
if ($this->owner->LayoutIndex == 0) {
return true;
} else if ($this->owner->LayoutIndex == 1) {
return false;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。