ロゴ画像中に TEMPLATE ENGINE とあるように、Smarty はテンプレートエンジンの一つです。ウェブサイトでは、複数のページをコンテンツだけを入れ替えて同じレイアウトで見せることが、ユーザビリティの観点からよくあります。この場合、見せ方を規定するのがテンプレートです。Smartyは、このテンプレートとコンテンツを結合するエンジンの役割をします。
エンジンの使用手順です。まず、データソースからコンテンツを抽出加工するプログラム中に Smarty オブジェクトを宣言します。次に、そのオブジェクトを介して、コンテンツとなるデータをテンプレートに渡します。最後に、テンプレートを表示させます。Smarty は、PHP というプログラム言語で書かれているので、Smarty を使用するプログラムも PHP で書きます。記述例は次のとおりです。
require_once(SMARTY_ROOT . LIB_DIR . 'Smarty.class.php');
$smarty = new Smarty;
~
$smarty->assign('contents', 'この文字列がテンプレートに渡されます。テンプレートでは、{$contents}で参照されます。');
~
$smarty->display($template);
Smarty の本質的価値は、コンテンツの見せ方であるプレゼンテーションとコンテンツを集約するビジネスロジックを分けることで、前者をテンプレートデザイナーが、後者をプログラマーが担当するというように分業を可能にし、これにより開発/保守効率を高める点にあります。
PHP は <?php と ?> で囲まれた内部をプログラムコードとして解釈し実行します。囲まれていない部分は、HTMLコードとしてそのまま出力されます。ひとつのスクリプトファイルにプレゼンテーションとビジネスロジックを簡単に切り替えて書くことを意図して作られた言語です。PHP 本来の特徴を生かすことで、わざわざ Smarty を使う必要がないのではないかという批評について、WIKIPEDIA http://en.wikipedia.org/wiki/Smarty で触れられています。no smarty というサイトも、Smarty の特徴を掴むうえで参考になります。
Smarty のドキュメントは日本語でも入手できます。私が初めて Smarty に触れたのは2006年、バージョンは 2.6.11でした。当時の公式サイトには、ドキュメントの日本語訳がありませんでした。でも、高木正弘さん、森川穣さん、亀本大地さん、松田晋介さんのご努力のお陰で、現在は日本語で Smarty のドキュメントを読むことができます。*1 *2 以下は、Smarty の公式サイト http://www.smarty.net/ からの引用です。
Japanese translation available!
[4-May-2007] The Japanese documentation is here! Thanks goes to Masahiro Takagi, Joe Morikawa, Daichi Kamemoto, and Shinsuke Matsuda for their hard work.
2013/06/14 20:42 Roger さんから
That takes us up to the next level. Great posnitg.