ezPublish と Zend Framework を組み合わせてみる
ezPublish のエクステンションを作れば作り込みが出来るのが分かった。
データベースのアクセスも普通に出来るようだが、やっぱり使いなれたフレームワークを使いたい。
id:sotarok さんが Ethna と WordPress を組み合わせたり、@shin1x1 さんが CakePHP と WordPress を(資料を探したけどアップされないのかな)組み合わせたように。
作りとしては
M = Zend Framework
VC = ezPublish
という具合にして、モデル(サービス層)からのレスポンスを ezPublish のテンプレートにアサインするという考え方。
$ cd /path/to/ezpublish $ vim extension/modules/hoge/module.php
<?php $rootPath = '/path/to/zendframework/root'; $libPath = $rootPath . DIRECTORY_SEPARATOR . 'library'; $appPath = $rootPath . DIRECTORY_SEPARATOR . 'app'; set_include_path(get_include_path() . PATH_SEPARATOR . $libPath . PATH_SEPARATOR . $appPath ); require_once 'Gene.php'; $options = array( 'env' => 'production', 'resources' => array('Cache', 'Config', 'Path', 'Db') ); Gene::app($appPath, $options); $Module = array('name' => 'Hoge'); $ViewList = array(); $ViewList['search'] = array( 'script' => 'search.php', ); $FunctionList = array(); $FunctionList['read'] = array(); include_once 'kernel/common/template.php';
まずはブートストラップとなる部分を作る。
Zend Framework を設置しているプロジェクトのディレクトリを include_path に追加して、ブートストラップを読み込む。
ここで自分のラッパーのブートストラップを読んでいるが、勿論普通に Zend_Application を呼べば標準が使える。
ただし、Zend_Application をそのまま呼んでも、ビューなどの不要なリソースを呼ぶので、使用するものだけを縛った方が良い。
続いてビュー。
$ vim extension/modules/hoge/search.php
<?php $keywords = ($http->hasVariable('keywords') === true) ? $http->variable('keywords') : null; $service = Gene::load('Service_Search'); $response = $service->search($keywords): $tpl = templateInit(); $tpl->setVariable('var', $response); $Result ['content'] = $tpl->fetch('design:hoge/search.tpl');
こんな感じでロジックだけ、Zend Framework 側に投げて、返ってきた値をテンプレートにアサインするだけ。
続く…。