php - 关于页面类型的 SilverStripe 最佳实践

标签 php silverstripe

假设您有两种页面类型:PageHomePage。显然 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/

相关文章:

php - Silverstripe 合并 GroupedLists

php - 文件夹权限 777 不工作

php - 从 mysql inner join 显示值的最佳方法

php - SilverStripe一次性查询所有DataObject表

php - 按 SilverStripe 上的类别过滤的循环博客文章

php - Silverstripe 不会从数据库返回字段

php - 计算多维数组中的元素?

php - 减少 Logo 和搜索字段之间的间距(WordPress 21)

php - 如何根据在 PHP MySQL 和 JQuery 中输入的州名称自动完成城市列表

silverstripe - 使用 ID 数组对 DataList::get 进行排序