How to extend the life of SilverStripe?

I have a special module that does a few things to remove the CMS. Let me call him silverstripe-cleanup.

One of the things this module does is move the fields MetaDatato my tab, in which I want to always be the last tab in the CMS.

So, if mine /httpdocs/silverstripe-cleanup/config/config.ymllooks like the one shown below, how can I ensure that this extension is applied after all the others?

---
Name: silverstripe-cleanup
---

SiteTree:
  extensions:
    - MetaDataMovementExtension
+4
source share
2 answers

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.

+3

Before: and After: ( ).

. mysite silverstripe/installer .

0

All Articles