/** * @param int $id - PageLayout ID */ public function actionCloneTemplate($id) { $model = $this->findModel($id); $newModel = new ContentTemplate(); // Clone attributes foreach ($model->attributes as $name => $value) { if (in_array($name, ['id', 'can_be_deleted'])) { continue; } if ($name == 'name') { $value .= ' (Copy)'; } $newModel->{$name} = $value; } $newModel->save(false); // Clone widget positions foreach ($model->contentTemplateHasWidgets as $prototypeLayoutWidget) { $layoutWidget = new ContentTemplateHasWidget(); $layoutWidget->content_template_id = $newModel->id; $layoutWidget->content_template_widget_id = $prototypeLayoutWidget->content_template_widget_id; $layoutWidget->position = $prototypeLayoutWidget->position; $layoutWidget->sorter = $prototypeLayoutWidget->sorter; $layoutWidget->save(false); } }
public function safeUp() { $topMenu = new ContentMenu(); $topMenu->name = 'Top menu'; $topMenu->code = 'topMenu'; $topMenu->save(false); $sideMenu = new ContentMenu(); $sideMenu->name = 'Side menu'; $sideMenu->code = 'sideMenu'; $sideMenu->position = '|left|right|'; $sideMenu->save(false); $template = new ContentTemplate(); $template->name = 'Default'; $template->layout = 'default'; $template->save(false); $pagesList = ['topMenu' => ['Main', 'About us', 'Services', 'Prices', 'Company history', 'Our goal', 'Portfolio', 'Contact'], 'sideMenu' => ['Recent activities', 'Random text', 'Funny stories', 'News', 'Dependencies', 'Our templates', 'These days', 'Keep fresh']]; foreach ($pagesList as $menu => $pages) { $menu = $menu == 'topMenu' ? $topMenu : $sideMenu; foreach ($pages as $page) { (new ContentPage(['name' => $page, 'content_template_id' => $template->id, 'content_menu_id' => $menu->id, 'type' => ContentPage::TYPE_TEXT, 'body' => $this->getLoremText()]))->save(false); } } Yii::$app->cache->flush(); }