在SilverStripe 3.1中,可以在about页面上添加不同的选项卡和字段。
然后在服务页面上显示不同的选项卡和字段。
关于页面 - 图像选项卡/附件选项卡
服务页面 - 图像选项卡/附件选项卡/员工人员选项卡
以下代码就是一个例子。我已经在一个可行的代码片段周围添加了if语句。但它似乎只适用于所有页面上显示相同选项卡的所有页面。
我一直在SilverStripe网站上进行视频课程,我可以看到你可以创建页面类型,但我真的需要知道你是否可以实现这一点,而无需创建额外的页面类型。
// I want this on the about page
// if page=about {
class Page extends SiteTree {
private static $has_one = array (
'Photo' => 'image',
'Brochure' => 'file',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Images', $photo = UploadField::create('Photo'));
$fields->addFieldToTab('Root.Attachments', $brochure = UploadField::create('Brochure'));
return $fields;
}
}
// I want this on the services page
// } elseif page=services {
class Page extends SiteTree {
private static $has_one = array (
'Photo' => 'image',
'Brochure' => 'file',
'Staff Person' => 'image',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Images', $photo = UploadField::create('Photo'));
$fields->addFieldToTab('Root.Attachments', $brochure = UploadField::create('Brochure'));
$fields->addFieldToTab('Root.Staff', $staff = UploadField::create('Staff'));
return $fields;
}
}
// }
class Page_Controller extends ContentController {
private static $allowed_actions = array();
public function init() {
parent::init();
}
}
答案 0 :(得分:2)
我建议您根据自己的意愿使用单独的页面类型。
但是,如果您只想使用一种页面类型,则可以在getCMSFields
函数中使用if语句来显示不同的字段。
在此示例代码中,我会检查URLSegment
,但您可以查看其他内容,例如Title
。
class Page extends SiteTree {
private static $has_one = array (
'Photo' => 'image',
'Brochure' => 'file',
'Staff Person' => 'image',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
if ($this->URLSegment == 'about' || $this->URLSegment == 'services') {
$fields->addFieldToTab('Root.Images', $photo = UploadField::create('Photo'));
$fields->addFieldToTab('Root.Attachments', $brochure = UploadField::create('Brochure'));
}
if ($this->URLSegment == 'services') {
$fields->addFieldToTab('Root.Staff', $staff = UploadField::create('Staff'));
}
return $fields;
}
}