Smartyのテンプレート構文をDBに登録して使用する
- July 27th, 2012
正直なところ利用価値もあんまり無さそうなんだけど、とりあえずメモしておく事に。
タイトルだけだと、いまいちピンとこないので、一から順番に説明を。
Smartyのテンプレート構文をDBに登録する
Smartyのテンプレート側で利用する、変数や関数を記入したテキストデータを登録しておく。
<?php
// 下記のようなテキストをDBに登録
$tplval1 = '私は{$result.name}です。<br />';
$tplval2 = '年齢は{$result.age|number_format}歳です。';
?>
テンプレートファイルを書き換える
変更可能なテンプレートファイルを用意して置いて、内容を上記のテキストデータに書き換える。
<?php
// ファイルデータを書き換える関数
function outputTmp($file, $filepath, $value) {
$fp = fopen($url, "w+");
$fw = fwrite($fp, $value);
fclose($fp);
return $file;
}
?>
fetch()でテンプレートを出力する
第3引数を指定しないと、前回と同じ内容のデータが返ってくる。
<?php
$smarty->assign("result", array( // Smarty変数定義
'name' => 'HOGE',
'age' => 9999,
));
$file = 'temp/output.tpl'; // TPLファイルの場所
$filepath = $_SERVER['DOCUMENT_ROOT']. '/templates/'. $file; // ファイルパス
echo '1. '. $smarty->fetch(outputTmp($file, $filepath, $tplval1), NULL, "name");
echo '2. '. $smarty->fetch(outputTmp($file, $filepath, $tplval2), NULL, "age");
/*
出力 : 1. 私はHOGEです。
出力 : 2. 年齢は9,999歳です。
*/
?>
テンプレートのテンプレートみたいになってるので、無意味な感じもしますが...。
まあ、ポジティブにみれば、FTPを使用せずに、Smartyの変数やら関数やらIF文やらが編集できるみたいな...。
- July 27th, 2012
