Магазин на Yii2, часть 6. Показываем на главной хиты, новинки и распродажи
06.05.2019
Теги: Web-разработка • Yii2 • ИнтернетМагазин • КаталогТоваров • Практика • Фреймворк
Давайте создадим контроллер PageController
, который будет отвечать за показ страниц сайта, не связанных с каталогом товаров. Вообще, такой контроллер уже есть сразу после установки фреймворка — это SiteController
, но мы его оставим без изменений, как образец. В первую очередь, надо переопределить контроллер по умолчанию с site
на page
:
/* * Файл config/web.php */ $config = [ /* ... */ 'defaultRoute' => 'page', /* ... */ ];
Потом создаем контроллер PageController
:
<?php namespace app\controllers; use app\models\Product; class PageController extends AppController { /* * Главная страница сайта */ public function actionIndex() { // получаем лидеров продаж $hitProducts = Product::find()->where(['hit' => 1])->limit(3)->asArray()->all(); // получаем новые товары $newProducts = Product::find()->where(['new' => 1])->limit(3)->asArray()->all(); // получаем товары распродажи $saleProducts = Product::find()->where(['sale' => 1])->limit(3)->asArray()->all(); return $this->render( 'index', compact('hitProducts', 'newProducts', 'saleProducts') ); } }
Контроллер наследует класс AppController
, где у нас будут методы, общие для всех контроллеров:
<?php namespace app\controllers; use yii\web\Controller; class AppController extends Controller { }
Теперь создаем view-шаблон для действия по умолчанию, т.е. файл views/page/index.php
. И переносим весь html и php код из views/site/index.php
в views/page/index.php
.
Находим место в html-коде, где идет вывод лидеров продаж, новинок и товаров распродажи. На это место вставляем циклы:
<section> <div class="container"> <div class="row"> <div class="col-sm-3"> <h2>Каталог</h2> <div class="category-products"> <?= TreeWidget::widget(); ?> </div> <h2>Бренды</h2> <div class="brand-products"> <?= BrandsWidget::widget(); ?> </div> </div> <div class="col-sm-9"> <?php if (!empty($hitProducts)): ?> <h2>Лидеры продаж</h2> <div class="row"> <?php foreach ($hitProducts as $item): ?> <div class="col-sm-4"> <div class="product-wrapper text-center"> <?= Html::img( '@web/images/products/medium/'.$item['image'], ['alt' => $item['name'], 'class' => 'img-responsive'] ); ?> <h2><?= $item['price']; ?> руб.</h2> <p> <a href="<?= Url::to(['catalog/product', 'id' => $item['id']]); ?>"> <?= Html::encode($item['name']); ?> </a> </p> <a href="#" class="btn btn-warning"> <i class="fa fa-shopping-cart"></i> Добавить в корзину </a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> <?php if (!empty($newProducts)): ?> <h2>Новинки</h2> <div class="row"> <?php foreach ($newProducts as $item): ?> <div class="col-sm-4"> <div class="product-wrapper text-center"> <?= Html::img( '@web/images/products/medium/'.$item['image'], ['alt' => $item['name'], 'class' => 'img-responsive'] ); ?> <h2><?= $item['price']; ?> руб.</h2> <p> <a href="<?= Url::to(['catalog/product', 'id' => $item['id']]); ?>"> <?= Html::encode($item['name']); ?> </a> </p> <a href="#" class="btn btn-warning"> <i class="fa fa-shopping-cart"></i> Добавить в корзину </a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> <?php if (!empty($saleProducts)): ?> <h2>Распродажа</h2> <div class="row"> <?php foreach ($saleProducts as $item): ?> <div class="col-sm-4"> <div class="product-wrapper text-center"> <?= Html::img( '@web/images/products/medium/'.$item['image'], ['alt' => $item['name'], 'class' => 'img-responsive'] ); ?> <h2><?= $item['price']; ?> руб.</h2> <p> <a href="<?= Url::to(['catalog/product', 'id' => $item['id']]); ?>"> <?= Html::encode($item['name']); ?> </a> </p> <a href="#" class="btn btn-warning"> <i class="fa fa-shopping-cart"></i> Добавить в корзину </a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> </div> </div> </div> </section>
- Магазин на Yii2, часть 35. Админка: загрузка картинок для страниц и страница 404
- Магазин на Yii2, часть 34. Показываем меню страниц в публичной части
- Магазин на Yii2, часть 33. Админка: приводим в порядок CRUD-код для страниц
- Магазин на Yii2, часть 32. Админка: удаление категорий и CRUD для страниц
- Магазин на Yii2, часть 31. Админка: загрузка изображений для категорий и брендов
- Магазин на Yii2, часть 30. Админка: WYSIWYG-редактор и изображение для товара
- Магазин на Yii2, часть 29. Админка: добавляем список товаров категории
Поиск: Web-разработка • Yii2 • Интернет магазин • Каталог товаров • Фреймворк • Лидеры продаж • Главная страница