SilverStripe 标签定制

问题描述 投票:0回答:3

在 SilverStripe 的 CMS 中,我想删除页面中的

Content
选项卡。我可以这样做:

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

然后我想创建自己的自定义选项卡:

$fields->addFieldToTab('Root.Content.MyTab', $myField);

但是,通过添加我自己的自定义选项卡,它会带回

Content
选项卡。

另一个选项只是将

MyTab
设置为默认的“向上”选项卡。这可能吗?

tabs content-management-system silverstripe
3个回答
9
投票

银条2.4

要删除 SilverStripe 2.4 中的

Content
选项卡:

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

并将字段添加到名为

MyTab
的选项卡中:

$fields->addFieldToTab('Root.Content.MyTab', $myField);

银条3.1

要删除 SilverStripe 3.1 中的

Content
选项卡:

$fields->removeFieldFromTab('Root', 'Main');

并将字段添加到名为

MyTab
的选项卡中:

$fields->addFieldToTab('Root.MyTab', $myField);

注释

删除

Content
选项卡意味着您无法控制页面标题。

removeFieldsFromTab
从该
Tab
中的
TabSet
/
FieldList
中删除多个字段。它采用字段名称数组作为第二个参数。

removeFieldFromTab
从此
Tab
内的
TabSet
/
FieldList
中删除单个字段。它采用字符串字段名称作为第二个参数。

在您的情况下,您想使用

removeFieldFromTab
而不是
removeFieldsFromTab


3
投票

我知道这个问题很老了,但我也遇到了同样的问题,并且我已经解决了。

在我写的 getCMSFields() 方法中

$fields = parent::getCMSFields();
$fields->removeByName('XXX'); //this line removes tab
return $fields;

其中“XXX”是我的选项卡“Root.XXX”的名称

我希望它能对某人有所帮助。


0
投票

对于 Silverstripe 5.x:

$fields->removeFieldFromTab('Root.Main', 'Content');
© www.soinside.com 2019 - 2024. All rights reserved.