To make the module the last to load, we can add something like After: "*"to our config.ymlfile module :
---
Name: silverstripe-cleanup
After: "*"
---
SiteTree:
extensions:
- MetaDataMovementExtension
, .
CMS . - , updateCMSFields getCMSFields.
, updateCMSFields:
class MetaDataMovementExtension extends Extension {
function updateCMSFields($fields) {
if ($metadataFields = $fields->fieldByName('Root.Main.Metadata')) {
$fields->removeFieldFromTab('Root.Main', 'Metadata');
$fields->addFieldToTab('Root.Metadata', $metadataFields);
}
}
}
:
class HomePage extends Page {
public function getCMSFields()
{
$fields = parent::getCMSFields();
$slidesField = GridField::create(
'Slides',
'Slide',
$this->Slides(),
GridFieldConfig_RecordEditor::create()
);
$fields->addFieldToTab('Root.Slides', $slidesField);
$fields->addFieldToTab('Root.Column', TextField::create('ColumnTitle', 'Title'));
return $fields;
}
}
updateCMSFields SiteTree::getCMSFields. getCMSFields , updateCMSFields , parent::getCMSFields(). . , . .
, getCMSFields beforeUpdateCMSFields:
public function getCMSFields()
{
$self =& $this;
$this->beforeUpdateCMSFields(function ($fields) use ($self) {
$slidesField = new GridField(
'Slides',
'Slide',
$self->Slides(),
GridFieldConfig_RecordEditor::create()
);
$fields->addFieldToTab('Root.Slides', $slidesField);
$fields->addFieldToTab('Root.Column', TextField::create('ColumnTitle', 'Title'));
});
return parent::getCMSFields();
}
updateCMSFields.
, beforeUpdateCMSFields $self $this beforeUpdateCMSFields.