Commit 44ff20b4daf10b1cf16aa35e6601a5f4f5a25cf3

Authored by Alexey Boroda
1 parent ae45093c

-Page categories ready

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 @@ _________________________________________________________ --&gt;
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 ],
... ...