假设您有两种页面类型:Page 和 HomePage。显然 Page 将作为所有页面的基本页面类型,而 HomePage 仅作为主页。对于每个基本页面,您都需要自定义标题照片,而对于主页则不需要。
在最佳实践中,理想的设置是什么?
页面扩展了 sitetree
并为标题添加了 ImageUpload 字段
HomePage 扩展 Page
并禁用 header 的 ImageUpload 字段
或
页面扩展了 sitetree
并为标题添加了 ImageUpload 字段
HomePage 扩展了 sitetree
,没有任何额外的 CMS 字段
最佳答案
我是这样做的:
Page.php
每个 Page
和任何扩展 Page
的页面都将继承图像上传字段。
class Page extends SiteTree {
private static $has_one = array(
'Image' => 'Image'
);
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', UploadField::create('Image'), 'Content');
return $fields;
}
}
HomePage.php
然后在您不希望图像上传字段的任何页面上调用 $fields->removeByName('Image');
class HomePage extends Page {
private static $db = array();
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeByName('Image');
return $fields;
}
}
关于php - 关于页面类型的 SilverStripe 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36343329/