前回include_pathを設定したとき「Smarty」の文字があったことからもわかるように、LolipopではSmartyが使用可能になっている。

まずはバージョンをチェック。Zendの技術情報コンテンツに「smartycheck.php」というコードが掲載されているので、LolipopのSmartyのバージョンを調べてみよう。

you can use Smarty(version 2.6.8).

2.6.8は2005年3月のリリース。最新版は2.6.19(2008年2月)なので、できれば新しいものを使いたい気分。

 

●オフィシャルからダウンロード

http://www.smarty.net/

●ディレクトリを作って展開

アーカイブの「libs」以下をすべてコピーし、必要なディレクトリを作る(名前は私の趣味。「templates_c」に違和感を感じるので。)

/smarty
  cache
  compile
  configs
  libs
  templates

cache,compile,configsはパーミションを0777に変更しておく。

●include_pathを設定

前回作った.htaccessを修正。

<IfModule mod_php4.c>
php_value include_path ".:/home/sites/lolipop.jp/users/[domain]-[your-subdomain]/web/lib/PEAR:/home/sites/lolipop.jp/users/[domain]-[your-subdomain]/web/smarty/libs:/usr/local/lib/php"
</IfModule>

●/smartyをふさぐ

Smarty関連のディレクトリは外から見えてもいいことはないので.htaccessでふさいでおく。

【/smarty/.htaccess】

Order allow,deny
Deny from all

●テストしてみる

【smarty_test.php】

<?php
define('SMARTY_ROOT', "/home/sites/lolipop.jp/users/[domain]-[your-subdomain]/web/smarty") ;
define('SMARTY_DIR',  SMARTY_ROOT . "/libs/") ;
require_once "Smarty.class.php" ;
$smarty = new Smarty() ;
$smarty->template_dir = SMARTY_ROOT . "/templates/" ;
$smarty->compile_dir  = SMARTY_ROOT . "/compile/" ;
$smarty->config_dir   = SMARTY_ROOT . "/configs/" ;
$smarty->cache_dir    = SMARTY_ROOT . "/cache/" ;
$smarty->assign("hoge", "piyo") ;
$smarty->display("smarty_test.tpl") ;
?>

【smarty_test.tpl】

smarty_test.tpl<br />
var 'hoge' = [{$hoge}] .

もちろんSmartyを使うページではベースクラスを作って使う。Smartyを使うと強制的に「俺フレームワーク」を書かされるのでいい勉強にもなると思う。

●リンク
本家:
http://www.smarty.net/

日本語ドキュメント:
http://www.smarty.net/manual/ja/