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