コード例 #1
0
 /**
  * @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);
     }
 }
コード例 #2
0
 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();
 }