findOrMakeTab('Root.Widgets'); $tab->setTitle('Sidebar'); $tab->removeByName('SideBar'); $widgetTypes = WidgetAreaEditor::create('Sidebar')->AvailableWidgets(); $available = []; /** @var Widget $type */ foreach ($widgetTypes as $type) { $available[get_class($type)] = $type->getCMSTitle(); } $tab->push(WidgetAreaField::create( 'SideBar', $this->owner->Sidebar(), $available )); } public function onBeforeWrite() { parent::onBeforeWrite(); if (!$this->owner->getField('SideBarID')) { $area = WidgetArea::create(); $area->write(); $this->owner->setField('SideBarID', $area->ID); } } }