Example #1
0
 public function beforeSave($insert)
 {
     $redirectLink = new Redirect(['from' => $this->fullLink]);
     if (!$this->link) {
         $this->link = TranslitHelper::to($this->title);
     }
     if ($this->isAttributeChanged('parent') || $this->isAttributeChanged('link')) {
         $this->fullLink = '';
         if ($parent = $this->getParentCategory()) {
             $linkParts = [$parent->link];
             while ($parent = $parent->getParentCategory()) {
                 $linkParts[] = $parent->getRelativeLink();
             }
             $this->fullLink = implode('/', $linkParts) . '/';
         }
         $this->fullLink .= $this->link;
         if ($childs = $this->getChildCategories()) {
             foreach ($childs as $childCategory) {
                 $childCategory->fullLink = $this->fullLink . '/' . $childCategory->link;
                 $childCategory->save(false);
             }
         }
         $redirectLink->to = $this->fullLink;
     }
     if ($redirectLink->to) {
         $redirectLink->save();
     }
     return parent::beforeSave($insert);
     // TODO: Change the autogenerated stub
 }
Example #2
0
 public function actionCategory($link)
 {
     $category = Category::findOne(['fullLink' => $link]);
     if (!$category) {
         if ($redirect = Redirect::findOne(['from' => $link])) {
             return \Yii::$app->response->redirect(yii\helpers\Url::to($redirect->to, true), 301)->send();
         }
         throw new NotFoundHttpException();
     }
     if (!empty($category->parentCategory)) {
         $this->getView()->params['breadcrumbs'][] = ['label' => $category->parentCategory->title, 'url' => yii\helpers\Url::toRoute(['/' . $category->parentCategory->fullLink], true)];
     }
     return $this->render('category', ['category' => $category, 'dataProvider' => new ActiveDataProvider(['query' => $category->getNews()->with('category'), 'sort' => ['defaultOrder' => ['publishDate' => SORT_DESC]], 'pagination' => ['pageSize' => 5]])]);
 }