テンプレートの内容は、テキスト・ラベルつきブロック そしてプレースホルダから構成されています。ブロックの中身は再利用でき、 プレースホルダに異なる値を代入して何度もパースすることができます。
典型的なテンプレート
<html> <body> Userlist <table> <!-- BEGIN row --> <tr> <td>{USERNAME}</td> <td>{EMAIL}</td> </tr> <!-- END row --> </table> </body> </html>
プレースホルダはテンプレートの中で定義できるもので、 その中身は PHP コードから設定します。 PHP code with content. バージョン (1.1.x) までのプレースホルダの書式は下記のようになります。
{[0-9A-Za-z_-]+}
バージョン 1.2.x 以降は、ドットも使用することができます。
{[\.0-9A-Za-z_-]+}
この意味は、 プレースホルダの名前は英大文字および英小文字、 下線とハイフンからなることを意味します。 名前は、波括弧で囲んだ中で空白をあけずに指定しなければなりません。 有効な名前は例えば下記のようになります。
バージョン 1.2.x 以降では、これも有効です。
無効な名前は例えば下記のようになります。
ブロックの書式は次のようになります。
バージョン 1.2.x 以降では、ブロック定義にドットも使用することができます。
ブロック名のルールはプレースホルダと同様です。 プレースホルダとは対照的に、 ブロックのマークアップでは空白を入れなければなりません。
ブロックの入れ子(ネスティング)は許されますが、解析に注意深くなってください。 最も深い内部のブロックを最初にセットし解析しなければならず、 次に、内側から外側に着手し、解析するようにしなければなりません。
IT では、全体のテンプレートファイルはそれ自体が "__global__" と呼ばれるメタブロックの中で、 入れ子になっています。ほとんどのブロック関連の関数は、 デフォルトのブロック名としてこれを使用します。 ブロックに関連するほとんどの機能は、 デフォルトとしてこのブロック名を使用します。
テンプレート
スクリプト
<?php
require_once "HTML/Template/IT.php";
$data = array
(
"0" => array("Stig", "Bakken"),
"1" => array("Martin", "Jansen"),
"2" => array("Alexander", "Merz")
);
$tpl = new HTML_Template_IT("./templates");
$tpl->loadTemplatefile("main.tpl.htm", true, true);
foreach($data as $name) {
foreach($name as $cell) {
// データを内側のブロックに代入します
$tpl->setCurrentBlock("cell") ;
$tpl->setVariable("DATA", $cell) ;
$tpl->parseCurrentBlock("cell") ;
}
// 外側のブロックをパースします
$tpl->parse("row");
}
// 結果を表示します
$tpl->show();
?>
出力