在SilverStripe CMS中移动元数据字段?

时间:2015-05-26 15:14:52

标签: content-management-system silverstripe

我正在尝试移动SilverStripe CMS中的默认元数据字段,但我似乎无法成功完成此操作。这就是我的尝试:

    $fields->removeFieldFromTab("Root.Content.Main", "Metadata");
    $fields->insertBefore(new FormField('Metadata', 'Metadata'), 'Content');

但它不起作用。我可以删除此字段,但将其添加回我想要的位置是挑战,因为它不仅仅是普通的文本字段或HTML字段。使用上面的代码,我可以在我想要的位置插入一个新的Metadata字段,但它不是正确的字段类型,也不包含任何现有的元数据字段元素。

有没有办法在这样的地方移动?

1 个答案:

答案 0 :(得分:3)

我们可以使用$fields->fieldByName('Root.Main.Metadata')来检索当前的元数据字段,以便我们可以将其重新放入。

尝试以下方法:

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

    if ($metadataField = $fields->fieldByName('Root.Main.Metadata')) {
        $fields->removeFieldFromTab('Root.Main', 'Metadata');
        $fields->addFieldToTab('Root.Main', $metadataField, 'Content');
    }

    return $fields;
}