如何在silverstripe中堆叠CMS字段标签?

时间:2017-12-12 18:55:37

标签: silverstripe silverstripe-4

我正在SilverStripe 4中创建自定义CMS字段,它们是使用左列中的标签和右列中的编辑器构建的。

见图片: enter image description here

如何堆叠标签和编辑器,如图中所示的默认内容编辑器和标签?

1 个答案:

答案 0 :(得分:0)

所以我在搜索其他内容时终于找到了答案。我会回答我自己的问题,以防有人在将来寻找同样的事情,因为找到Silverstripe问题的答案很难。

在文档中,它表示要为其他WYSIWYG编辑器执行此操作

return new FieldList([
    new HTMLEditorField('OtherContent', 'Other content', $this->OtherContent, 'myConfig')
]);

我们将把它分解为组件以给予我们更多控制

$fields = parent::getCMSFields();
//create a $fields variable that will hold the new fields

$jobDescriptionField = HTMLEditorField::create('JobDescription', 'JobDescription');
//create the actual field in it's own variable

$fields->addFieldToTab('Root.Main', $jobDescriptionField , 'Content');
//add the new field to our fields and tell it to appear above the default 'Content' editor

如果我们在这里停止并返回$ fields,我们将把Label浮动到左边,内容编辑器浮动到右边。它甚至会在全屏幕上被压扁。不好。

所以我们需要添加一个由silverstripe提供的类,名为" stacked"

$jobDescriptionField->addExtraClass('stacked');

所以完整的代码如下:

public function getCMSFields(){
    $fields = parent::getCMSFields();

    $jobDescriptionField = HTMLEditorField::create('JobDescription', 'JobDescription');

    $fields->addFieldToTab('Root.Main', $jobDescriptionField , 'Content');

    $jobDescriptionField->addExtraClass('stacked');
    return $fields;

}