Commit c61dbbfba0ecb1ac405119e1041f258dee4808b4
1 parent
2e5525d5
-Categories ready
Showing
2 changed files
with
67 additions
and
50 deletions
Show diff stats
frontend/controllers/PageController.php
| ... | ... | @@ -3,6 +3,8 @@ |
| 3 | 3 | |
| 4 | 4 | use artbox\core\components\SeoComponent; |
| 5 | 5 | use artbox\core\models\Page; |
| 6 | + use artbox\core\models\PageCategory; | |
| 7 | + use yii\db\ActiveQuery; | |
| 6 | 8 | use yii\web\Controller; |
| 7 | 9 | use yii\web\NotFoundHttpException; |
| 8 | 10 | use Yii; |
| ... | ... | @@ -33,25 +35,33 @@ |
| 33 | 35 | $lefts = null; |
| 34 | 36 | } |
| 35 | 37 | |
| 36 | - $pages = Page::find() | |
| 37 | - ->with('lang') | |
| 38 | - ->where( | |
| 39 | - [ | |
| 40 | - 'not', | |
| 41 | - [ 'id' => $id ], | |
| 42 | - ] | |
| 43 | - ) | |
| 44 | - ->limit(5) | |
| 45 | - ->all(); | |
| 38 | + $categories = PageCategory::find() | |
| 39 | + ->with('lang') | |
| 40 | + ->with( | |
| 41 | + [ | |
| 42 | + 'pages' => function (ActiveQuery $query) use ($id) { | |
| 43 | + $query->with('lang.alias'); | |
| 44 | + $query->where( | |
| 45 | + [ | |
| 46 | + 'not', | |
| 47 | + [ | |
| 48 | + 'id' => $id, | |
| 49 | + ], | |
| 50 | + ] | |
| 51 | + ); | |
| 52 | + }, | |
| 53 | + ] | |
| 54 | + ) | |
| 55 | + ->all(); | |
| 46 | 56 | |
| 47 | 57 | return $this->render( |
| 48 | 58 | 'view', |
| 49 | 59 | [ |
| 50 | - 'model' => $model, | |
| 51 | - 'pages' => $pages, | |
| 52 | - 'body' => $body, | |
| 53 | - 'lefts' => $lefts, | |
| 54 | - 'images' => $model->getImages(), | |
| 60 | + 'model' => $model, | |
| 61 | + 'categories' => $categories, | |
| 62 | + 'body' => $body, | |
| 63 | + 'lefts' => $lefts, | |
| 64 | + 'images' => $model->getImages(), | |
| 55 | 65 | ] |
| 56 | 66 | ); |
| 57 | 67 | } | ... | ... |
frontend/views/page/view.php
| ... | ... | @@ -2,17 +2,18 @@ |
| 2 | 2 | use artbox\core\components\SeoComponent; |
| 3 | 3 | use artbox\core\models\Image; |
| 4 | 4 | use artbox\core\models\Page; |
| 5 | + use artbox\core\models\PageCategory; | |
| 5 | 6 | use yii\helpers\Html; |
| 6 | 7 | use yii\web\View; |
| 7 | 8 | |
| 8 | 9 | /** |
| 9 | - * @var View $this | |
| 10 | - * @var Page $model | |
| 11 | - * @var Page[] $pages | |
| 12 | - * @var SeoComponent $seo | |
| 13 | - * @var Image[] $images | |
| 14 | - * @var string $lefts | |
| 15 | - * @var string $body | |
| 10 | + * @var View $this | |
| 11 | + * @var Page $model | |
| 12 | + * @var PageCategory[] $categories | |
| 13 | + * @var SeoComponent $seo | |
| 14 | + * @var Image[] $images | |
| 15 | + * @var string $lefts | |
| 16 | + * @var string $body | |
| 16 | 17 | */ |
| 17 | 18 | $seo = \Yii::$app->get('seo'); |
| 18 | 19 | $this->params[ 'breadcrumbs' ][] = $seo->title; |
| ... | ... | @@ -69,30 +70,36 @@ _________________________________________________________ --> |
| 69 | 70 | <!-- *** PAGES MENU *** |
| 70 | 71 | _________________________________________________________ --> |
| 71 | 72 | <div class="panel panel-default sidebar-menu"> |
| 72 | - | |
| 73 | - <div class="panel-heading"> | |
| 74 | - <h3 class="panel-title">Услуги</h3> | |
| 75 | - </div> | |
| 76 | - | |
| 77 | - <div class="panel-body"> | |
| 78 | - <ul class="nav nav-pills nav-stacked"> | |
| 79 | - <?php | |
| 80 | - foreach ($pages as $page) { | |
| 81 | - echo Html::tag( | |
| 82 | - 'li', | |
| 83 | - Html::a( | |
| 84 | - $page->lang->title, | |
| 85 | - [ | |
| 86 | - 'page/view', | |
| 87 | - 'id' => $page->id, | |
| 88 | - ] | |
| 89 | - ) | |
| 90 | - ); | |
| 91 | - } | |
| 92 | - ?> | |
| 93 | - </ul> | |
| 94 | - | |
| 95 | - </div> | |
| 73 | + | |
| 74 | + <?php foreach ($categories as $category) { | |
| 75 | + if (!empty($category->pages)) { | |
| 76 | + ?> | |
| 77 | + | |
| 78 | + <div class="panel-heading"> | |
| 79 | + <h3 class="panel-title">Услуги</h3> | |
| 80 | + </div> | |
| 81 | + | |
| 82 | + <div class="panel-body"> | |
| 83 | + <ul class="nav nav-pills nav-stacked"> | |
| 84 | + <?php | |
| 85 | + foreach ($category->pages as $page) { | |
| 86 | + echo Html::tag( | |
| 87 | + 'li', | |
| 88 | + Html::a( | |
| 89 | + $page->lang->title, | |
| 90 | + [ | |
| 91 | + 'page/view', | |
| 92 | + 'id' => $page->id, | |
| 93 | + ] | |
| 94 | + ) | |
| 95 | + ); | |
| 96 | + } | |
| 97 | + ?> | |
| 98 | + </ul> | |
| 99 | + | |
| 100 | + </div> | |
| 101 | + <?php } | |
| 102 | + } ?> | |
| 96 | 103 | </div> |
| 97 | 104 | |
| 98 | 105 | <!-- *** PAGES MENU END *** --> |
| ... | ... | @@ -121,9 +128,9 @@ _________________________________________________________ --> |
| 121 | 128 | |
| 122 | 129 | |
| 123 | 130 | <div id="get-it" class="pages"> |
| 124 | - <div class="container"> | |
| 125 | - <div class="col-md-12 col-sm-12" style="text-align: center;"> | |
| 126 | - <a href="#" class="btn bnm btn-template-transparent-primary modal-link" data-form="appointment-modal" data-modalname="Записаться на приём">Записаться на прием</a> | |
| 127 | - </div> | |
| 131 | + <div class="container"> | |
| 132 | + <div class="col-md-12 col-sm-12" style="text-align: center;"> | |
| 133 | + <a href="#" class="btn bnm btn-template-transparent-primary modal-link" data-form="appointment-modal" data-modalname="Записаться на приём">Записаться на прием</a> | |
| 128 | 134 | </div> |
| 135 | + </div> | |
| 129 | 136 | </div> |
| 130 | 137 | \ No newline at end of file | ... | ... |