Commit 44ff20b4daf10b1cf16aa35e6601a5f4f5a25cf3
1 parent
ae45093c
-Page categories ready
Showing
2 changed files
with
57 additions
and
44 deletions
Show diff stats
backend/views/layouts/menu_items.php
... | ... | @@ -35,9 +35,14 @@ |
35 | 35 | 'icon' => 'file-text', |
36 | 36 | 'items' => [ |
37 | 37 | [ |
38 | - 'label' => \Yii::t('core', 'Static pages'), | |
38 | + 'label' => \Yii::t('core', 'Pages'), | |
39 | 39 | 'url' => [ '/page/index' ], |
40 | 40 | 'icon' => 'file-text', |
41 | + ], | |
42 | + [ | |
43 | + 'label' => \Yii::t('core', 'Categories'), | |
44 | + 'url' => [ '/page-category/index' ], | |
45 | + 'icon' => 'archive', | |
41 | 46 | ] |
42 | 47 | ], |
43 | 48 | ], | ... | ... |
frontend/views/layouts/main.php
1 | 1 | <?php |
2 | + | |
2 | 3 | /** |
3 | - * @var View $this | |
4 | - * @var string $content | |
5 | - * @var SeoComponent $seo | |
6 | - * @var User $user | |
4 | + * @var View $this | |
5 | + * @var string $content | |
6 | + * @var SeoComponent $seo | |
7 | + * @var User $user | |
8 | + * @var PageCategory[] $pageCategories | |
7 | 9 | */ |
10 | + | |
8 | 11 | use artbox\core\components\SeoComponent; |
9 | 12 | use artbox\core\helpers\ImageHelper; |
10 | 13 | use artbox\core\models\Feedback; |
11 | - use artbox\core\models\Page; | |
14 | + use artbox\core\models\PageCategory; | |
12 | 15 | use artbox\core\models\User; |
13 | 16 | use common\models\Settings; |
14 | 17 | use frontend\assets\AppAsset; |
... | ... | @@ -16,7 +19,7 @@ |
16 | 19 | use yii\bootstrap\ActiveForm; |
17 | 20 | use yii\bootstrap\Nav; |
18 | 21 | use yii\bootstrap\Html; |
19 | - use yii\helpers\Json; | |
22 | + use yii\db\ActiveQuery; | |
20 | 23 | use yii\helpers\Url; |
21 | 24 | use yii\web\View; |
22 | 25 | use yii\widgets\Breadcrumbs; |
... | ... | @@ -29,13 +32,21 @@ |
29 | 32 | $controller = Yii::$app->controller; |
30 | 33 | $default_controller = Yii::$app->defaultRoute; |
31 | 34 | $isHome = ( ( $controller->id === $default_controller ) && ( $controller->action->id === $controller->defaultAction ) ) ? true : false; |
32 | - /** | |
33 | - * @var Page[] $pages | |
34 | - */ | |
35 | - $pages = Page::find() | |
36 | - ->where([ 'in_menu' => true ]) | |
37 | - ->with('lang.alias') | |
38 | - ->all(); | |
35 | + | |
36 | + $pageCategories = PageCategory::find() | |
37 | + ->with( | |
38 | + [ | |
39 | + 'lang', | |
40 | + 'pages' => function (ActiveQuery $query) { | |
41 | + $query->with('lang.alias') | |
42 | + ->where(['in_menu' => true]) | |
43 | + ->orderBy([ 'sort' => SORT_ASC ]); | |
44 | + }, | |
45 | + ] | |
46 | + ) | |
47 | + ->where([ 'status' => true ]) | |
48 | + ->orderBy([ 'sort' => SORT_ASC ]) | |
49 | + ->all(); | |
39 | 50 | $logo = null; |
40 | 51 | if ($settings->logo) { |
41 | 52 | $logo_img = ImageManager::findOne($settings->logo); |
... | ... | @@ -80,7 +91,7 @@ |
80 | 91 | |
81 | 92 | ga('create', '<?=$settings->ga_code?>', 'auto'); |
82 | 93 | ga('send', 'pageview'); |
83 | - | |
94 | + | |
84 | 95 | </script> |
85 | 96 | <div id="all"> |
86 | 97 | <header> |
... | ... | @@ -260,41 +271,38 @@ _________________________________________________________ --> |
260 | 271 | |
261 | 272 | <div class="navbar-collapse collapse" id="navigation"> |
262 | 273 | <?php |
263 | - $pagesLinks = []; | |
264 | - foreach ($pages as $page) { | |
265 | - $route = [ | |
266 | - 'page/view', | |
267 | - 'id' => $page->id, | |
268 | - ]; | |
269 | - if (!empty($page->lang->alias) && !empty($page->lang->alias->route)) { | |
270 | - $route = Json::decode($page->lang->alias->route); | |
274 | + $items = []; | |
275 | + $items[] = [ | |
276 | + 'label' => \Yii::t('app', 'Home'), | |
277 | + 'url' => [ 'site/index' ], | |
278 | + ]; | |
279 | + foreach ($pageCategories as $category) { | |
280 | + if (empty($category->pages)) { | |
281 | + continue; | |
271 | 282 | } |
272 | - $pagesLinks[] = [ | |
283 | + $pages = []; | |
284 | + foreach ($category->pages as $page) { | |
285 | + $pages[] = [ | |
273 | 286 | 'label' => $page->lang->title, |
274 | - 'url' => $route, | |
287 | + 'url' => Url::to(['page/view','alias' => $page->lang->alias]), | |
288 | + ]; | |
289 | + } | |
290 | + $items[] = [ | |
291 | + 'label' => $category->lang->title, | |
292 | + 'items' => $pages, | |
275 | 293 | ]; |
276 | 294 | } |
295 | + $items[] = [ | |
296 | + 'label' => \Yii::t('app', 'Contatcs'), | |
297 | + 'url' => [ 'site/contact' ], | |
298 | + ]; | |
299 | + $items[] = [ | |
300 | + 'label' => \Yii::t('app', 'About'), | |
301 | + 'url' => [ 'site/about' ], | |
302 | + ]; | |
277 | 303 | echo Nav::widget( |
278 | 304 | [ |
279 | - 'items' => [ | |
280 | - [ | |
281 | - 'label' => \Yii::t('app', 'Home'), | |
282 | - 'url' => [ 'site/index' ], | |
283 | - ], | |
284 | - [ | |
285 | - 'label' => \Yii::t('app', 'Pages'), | |
286 | - 'items' => $pagesLinks, | |
287 | - 'visible' => count($pagesLinks), | |
288 | - ], | |
289 | - [ | |
290 | - 'label' => \Yii::t('app', 'Contatcs'), | |
291 | - 'url' => [ 'site/contact' ], | |
292 | - ], | |
293 | - [ | |
294 | - 'label' => \Yii::t('app', 'About'), | |
295 | - 'url' => [ 'site/about' ], | |
296 | - ], | |
297 | - ], | |
305 | + 'items' => $items, | |
298 | 306 | 'options' => [ |
299 | 307 | 'class' => 'nav navbar-nav navbar-right', |
300 | 308 | ], | ... | ... |