調べたこと 第十七回

出力のテンプレート化

テンプレートには、「値が入る場所」を特別なタグで埋め込んで、プログラムからはそこに値を差し込む。

最近のプログラムにはほとんどテンプレート化が使われている。

 

なぜ必要か?

○ テンプレートを見ればどんな出力がされるかだいたい分かる。

○ 変更する時にテンプレートだけを修正すればいい。

○ デザイナーとプログラマの共同作業がしやすい。

 

で、テンプレートを処理するにはとくていのライブラリを使わないといけない。

(テンプレートエンジン)

これで、有名なのがスマーティというエンジン。

 

ダウンロードしたら、ファイルを展開して、PHPファイルを配置する場所にコピーする。

 

で、テンプレートを作っていくけど、プログラムとは別のディレクトリに配置することが勧められている。

テンプレートを置くディレクトリを作って、テンプレートファイルは拡張子に .tpl  

をつける。

このファイルをテキストエディタで編集していくけど、

制御したい部分に「{タグ名}」という特殊なタグを埋め込むことで指示をする。

 

 

スマーティにはほかにも必要なディレクトリがある。

templates_c   → テンプレートがコンパイルされたものの保存先

cache  → キャッシュに使うディレクト

 

注意!!

スマーティのディレクトリはWEBから見えないディレクトリに置くこと!

 

で、このテンプレートを使って出力するプログラムを作る。こんな感じ

 

<? php

require_once('libs/Smarty.class.php');  →libsはスマーティがあるのがこのディレクト

                   下だから。smartyのライブラリを読み込み

$smarty = new Smarty();  smartyはオブジェクトとして構成されている。

$smarty->template_dir ='templates/';  ディレクトリの場所を設定↓

$smarty-> complite_dir ='templates_c/';

$smarty->config_dir ='configs/';

$smarty->cache_dir ='cache/';   

                  ここまでで、smartyが使えるようになった↑

 

$a = array("りんご","ばなな","みかん","じゃがいも","とまと");

$smarty->assign("items",$a); →itemsという名称で参照できる配列を作成

$smarty->display("〜.tpl"); →画面に表示されるようにするにはこのdisplayメソッド

?>                                を呼び出す。

 

html

<body>

<table border ='1'>

{foreach from=$items item=val}  → itemsに値を設定 ループ展開してvalに代入

<tr><td>{$val}</td></tr> → valを出力

{foreach}

</table>

</body>