Smartyのテンプレート内で使える自作関数というかマクロというかそういうのはプラグインというらしい。
けっこう見つけづらかった
けっこう見つけづらかった
これを見るとプラグインの作り方などはわかると思う。
http://d.hatena.ne.jp/okyohei/20080528
あと、SmartyのHOME直下にあるplugins内の各ソース(escapeとか)も見てみれば絶対わかる。
わからなかったらわかりそうなやつに聞いてみなさい。
問題は、パスをどう通すか。phpのinclude_pathを通しても使えるのは
使えるのだけど、パフォーマンス的によろしくない。
どの程度よろしくないのかわからないけど。
というわけで、ZendFrameworkでSmartyを使っている場合のパスの通し方の一例。
Zend FrameworkのZend_ViewをSmartyにで作ったSmarty用のラッパー(Xxx_View_Smarty)
/**
* コンストラクタ
*
* @param string $tmplPath
* @param array $extraParams
* @return void
*/
public function __construct()
{
$config = new Zend_Config_Ini(
dirname(__FILE__). '/../../../config/application.ini', SITE_ENVIRONMENT);
$this->_smarty = new Smarty;
$this->_smarty->compile_dir = $config->smarty->compile_dir;
$this->_smarty->cache_dir = $config->smarty->cache_dir;
$this->_smarty->caching = $config->smarty->caching;
$this->_smarty->compile_check = $config->smarty->compile_check;
$this->_smarty->cache_lifetime = $config->smarty->cache_lifetime;
$this->_smarty->plugins_dir[] = $config->smarty->plugins_dir;
$this->_smarty->left_delimiter = '<{';
$this->_smarty->right_delimiter = '}>';
if (null !== $tmplPath) {
$this->setScriptPath($tmplPath);
}
コンフィグファイル(application.ini)抜粋
[develop]
smarty.compile_dir = path\to\compile_dir
smarty.cache_dir = path\to\cache_dir
smarty.caching = 1
smarty.compile_check = true
smarty.cache_lifetime = 1
smarty.plugins_dir = path\to\plugins
こんな感じで。
コメントする