■
function smarty_function_ethna_view($params, &$smarty) { $controller = Ethna_Controller::getInstance(); $contents = null; if (isset($params['expire'])) { $plugin =& $controller->getPlugin(); $cache =& $plugin->getPlugin('Cachemanager', 'Memcache'); $contents = $cache->get($params['name'], $params['lifetime'], 'ethna_view'); if (! is_null($contents)) { return $contents; } } if (is_null($contents)) { $classname = $controller->getViewClassName($params['name']); $view = new $classname($controller->getBackend(), $params['name'], $controller->_getForwardPath($params['name'])); $view->preforward(); ob_start(); $view->forward(); $contents = ob_get_contents(); ob_end_clean(); } if (isset($params['expire'])) { $plugin =& $controller->getPlugin(); $cache =& $plugin->getPlugin('Cachemanager', 'Memcache'); $cache->get($params['name'], $contetns,date(), 'ethna_view'); } return $contents; }
こんなカンジ(まだキャッシュまわりテストしてないよ)
Smartyテンプレート上でこんなカンジ。
{ethna_view name="view_name"}
最初アクションも実行できるようにしてたけど。
Viewだけでいいことに気が付いた。