Реализация простого плагина
Создание плагина
Основные понятия
создадим к примеру плагин job
создадим для него папку /site/plugins/job
создадим контроллер IndexController для отображения чего нибудь помещаем его в /site/plugins/job/controllers/IndexController.php
Класс IndexController должен быть объявлен как
class Job_IndexController extends SiteBaseController { }
создадим в нём также экшн indexAction
class Job_IndexController extends SiteBaseController { function indexAction() { } }
Вывод содержимого на экран
Для вывода переменных на экран(в область Smarty) в контроллере есть объект $this->smarty, который является прокладкой между зендом и смарти Он поддерживает все методы Smarty и реализует некоторые свои
в indexAction делаем все необходимые манипуляции
class Job_IndexController extends SiteBaseController { function indexAction() { $x = 2; $y = 2; $this->view->z = $x*$y; /////// передаём переменную Z в область smarty } }
у текущего скина в области контента вызывается функция site::getContent()
которая автоматом подгружает TPL
с контентом
т.е. в нашем случае это будет /site/plugins/job/views/content/index/index.tpl job в пути это имя плагина index - имя контроллера index - имя экшна
создаём файл /site/plugins/job/views/content/index/index.tpl
и пишем в нём: {$z}
Вуаля! при входе на страницу /job/index/index мы увидим "4" в области контента
Работа с БД
Работа с БД в плагинах осуществляется через классы моделей
для инициализации модели используется метод initModel()
class Job_IndexController extends SiteBaseController { function initModel() { $this->model = new jobModel(); } function indexAction() { $this->view->z = $this->model->getZ(); /////// передаём переменную Z в область smarty } }
сами модели хранятся в папке models, плагина
в нашем случае это /site/plugins/job/models/jobModel.php
класс модели обязательно должен быть наследован от DbModel
class jobModel extends DbModel { function getZ(){ return $this->s_fetchOne('select Z from X'); } }