E-Commerce Blog

Профессиональная реклама интернет-магазинов

  • Все
  • Разработка
    • Лайфхаки
    • Учим матчасть
    • Монетизация
  • Seo
    • «Seo тактика»
    • «Одной строкой»
    • Поведенческие факторы сайта
    • Эксперименты и аналитика
  • SMM
    • Маркетинг
    • Кейсы
  • E-Commerce
    • E-бизнес
    • E-гаджеты
    • E-дизайн
    • Креатив
    • Коммуникации
  • Site Projects
    • Наша команда
    • Сервисы и разработки
Главная / Для вебмастера / Учим матчасть / Изучение Yii на практике: Widget`s

Вячеслав Докукин // Комментариев нет

Изучение Yii на практике: Widget`s

Изучение Yii на практике: Widget`s

При изучении Yii на практике, в процессе переноса действующего проекта нашей компании: сервиса nezabud-ka.ru,
я столкнулся с рядом проблем, в частности с тем что модули в Yii не встраиваются в позиции шаблона и не выводятся в нужных местах страницы, как например в Joomla.

В Yii все оказалось похожим на Drupal, а именно модули имели собственный путь URL и под-страницы, как целый компонент в Joomla.

project

Такой вариант мне не подходил, т.к требовалось в общем шаблоне на главной странице сервиса, выводить блок с определенными данными о статистике сервиса, и не только на главной…

1

Такая задача в Joomla всегда решалась элементарно через написание модуля.

Выход в написании кучи условий в шаблоне, а также всего кода который бы выполнял SQL выборку и выводил в статистику,
также был не приемлем из-за того что это будет захламлять весь код,
что в дальнейшем усложнить его поддержку.

Озадачившись данным вопросом, в документации о Yii в разделе Создание расширений,
я обнаружил просто шикарный способ решения своей задачи — Виджет.

Данный тип расширения одновременно сочетает в себе преимущества плагинов и модулей которые есть в joomla!

Простейший виджет в Yii состоит из двух файлов: файла самого виджета и файла с представлением.

Файл с классом виджета, должен находится по такому пути protected/components/StatWidget.php

А файл с представлением protected/components/views/stat.php

Класc виджета в моем случае будет содержать следующий код, выборкой из БД и пр.:

class StatWidget extends CWidget {
 
    public $params = array(
        'uid'=>null,
		'users'=>0,
		'eventsall'=>0,
		'eventsday'=>0
    );
 
    public function run() {
 
		$row = Yii::app()->db->createCommand()
		->select('COUNT(id) AS eventsall, (SELECT COUNT(id) FROM tbl_users) AS users, (SELECT COUNT(id) FROM tbl_events WHERE created >= \''.date('Y-m-d').' 00:00:00\') AS eventsday')
		->from('tbl_events')
		->queryAll();
 
		$this->params['users'] = $row[0]['users'];
		$this->params['eventsall'] = $row[0]['eventsall'];
		$this->params['eventsday'] = $row[0]['eventsday'];
 
        $this->render('stat', array('params' => $this->params));
    }
}

class StatWidget extends CWidget { public $params = array( 'uid'=>null, 'users'=>0, 'eventsall'=>0, 'eventsday'=>0 ); public function run() { $row = Yii::app()->db->createCommand() ->select('COUNT(id) AS eventsall, (SELECT COUNT(id) FROM tbl_users) AS users, (SELECT COUNT(id) FROM tbl_events WHERE created >= \''.date('Y-m-d').' 00:00:00\') AS eventsday') ->from('tbl_events') ->queryAll(); $this->params['users'] = $row[0]['users']; $this->params['eventsall'] = $row[0]['eventsall']; $this->params['eventsday'] = $row[0]['eventsday']; $this->render('stat', array('params' => $this->params)); } }

Где в функцию render передается имя файла представления — stat

Файл представления виджета содержит в себе разметку и вывод данных:

 

 

Статистика

 

  • Пользователей:

 

 

  • Добавлено событий:

 

 

  • Событий сегодня:

 

 

Выводится виджет ф шаблоне темы, в любом месте!

Выглядит это так:

$this->widget('StatWidget',array('params'=>array(
	'uid' => Yii::app()->user->id,
)));

$this->widget('StatWidget',array('params'=>array( 'uid' => Yii::app()->user->id, )));

Где ‘uid’ => Yii::app()->user->id , это передача параметров в виджет, которая дает вожможность влиять на работу виджета в челом.

Вобщем виджеты в Yii порадовали!

Читайте также

Поздравляем с Новым Годом! Тематичность ссылок, Яндекс Устанавливаем и настраиваем Википедию на сайте, движок MediaWiki Загадочный движок Ez Publish

Filed Under: Учим матчасть Tagged With: CMS, nezabud-ka, Widget, Yii, виджет

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

  • Все
  • Разработка
  • Seo
  • SMM
  • E-Commerce
  • Site Projects

Copyright © 2006-2025 · Site Projects

· Log in

Политика конфидециальности