Silverstripe-每页不同的选项卡和字段

Silverstripe-每页不同的选项卡和字段,silverstripe,Silverstripe,例如,在SilverStripe 3.1中,可以在about页面上添加不同的选项卡和字段 然后是服务页面上的不同选项卡和字段,例如 关于页面-图像选项卡/附件选项卡 服务页面-图像选项卡/附件选项卡/工作人员选项卡 下面的代码是一个示例。我在一个代码段周围添加了if语句,该代码段确实有效。但它似乎只适用于所有页面,在所有页面上显示相同的选项卡 我一直在SilverStripe网站上做视频课程,我可以看到你可以创建页面类型,但我真的需要知道你是否可以在不创建额外页面类型的情况下实现这一点 //我想

例如,在SilverStripe 3.1中,可以在about页面上添加不同的选项卡和字段

然后是服务页面上的不同选项卡和字段,例如

关于页面-图像选项卡/附件选项卡

服务页面-图像选项卡/附件选项卡/工作人员选项卡

下面的代码是一个示例。我在一个代码段周围添加了if语句,该代码段确实有效。但它似乎只适用于所有页面,在所有页面上显示相同的选项卡

我一直在SilverStripe网站上做视频课程,我可以看到你可以创建页面类型,但我真的需要知道你是否可以在不创建额外页面类型的情况下实现这一点

//我想在about页面上看到这个
//如果page=about{
类页面扩展SiteTree{
私有静态$has_one=数组(
“照片”=>“图像”,
“宣传册”=>“文件”,
);
公共函数getCMSFields(){
$fields=parent::getCMSFields();
$fields->addFieldToTab('Root.Images',$photo=UploadField::create('photo');
$fields->addFieldToTab('Root.Attachments',$宣传册=UploadField::create('宣传册');
返回$fields;
}
}
//我想把这个放在服务页面上
//}elseif page=服务{
类页面扩展SiteTree{
私有静态$has_one=数组(
“照片”=>“图像”,
“宣传册”=>“文件”,
“员工”=>“图像”,
);
公共函数getCMSFields(){
$fields=parent::getCMSFields();
$fields->addFieldToTab('Root.Images',$photo=UploadField::create('photo');
$fields->addFieldToTab('Root.Attachments',$宣传册=UploadField::create('宣传册');
$fields->addFieldToTab('Root.Staff',$Staff=UploadField::create('Staff');
返回$fields;
}
}
// }
类页控制器扩展ContentController{
私有静态$allowed_actions=array();
公共函数init(){
父::init();
}
}

我建议您使用单独的页面类型来完成所需的操作

但是,如果只想使用一种页面类型,可以在
getCMSFields
函数中使用if语句来显示不同的字段

在这个示例代码中,我检查了
urlsgment
,尽管您可以检查类似于
Title
的内容

类页面扩展SiteTree{
私有静态$has_one=数组(
“照片”=>“图像”,
“宣传册”=>“文件”,
“员工”=>“图像”,
);
公共函数getCMSFields(){
$fields=parent::getCMSFields();
如果($this->urlsem分段=='about'| |$this->urlsem分段=='services'){
$fields->addFieldToTab('Root.Images',$photo=UploadField::create('photo');
$fields->addFieldToTab('Root.Attachments',$宣传册=UploadField::create('宣传册');
}
如果($this->urlsem分段=='services'){
$fields->addFieldToTab('Root.Staff',$Staff=UploadField::create('Staff');
}
返回$fields;
}
}

是,请使用不同的页面类型。如果不小心更改了$URLSEMENT,则无法再访问这些字段。不同的页面类型也有一个很大的优势,那就是你可以很容易地为它们添加一个单独的布局模板。@3dgoo谢谢,nicley做得不错。我确实理解页面类型如何更加稳定。我只是好奇是否可以主要针对主页进行。我想要一个简单的方法让客户端通过标签添加几块主页内容,现在看来这是一个很好的解决方案。