導入

導入 – テンプレートの作成およびパース

テンプレート

テンプレートの内容は、テキスト・ラベルつきブロック そしてプレースホルダから構成されています。ブロックの中身は再利用でき、 プレースホルダに異なる値を代入して何度もパースすることができます。

典型的なテンプレート

<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_-]+}

この意味は、 プレースホルダの名前は英大文字および英小文字、 下線とハイフンからなることを意味します。 名前は、波括弧で囲んだ中で空白をあけずに指定しなければなりません。 有効な名前は例えば下記のようになります。

  • {Placeholder}
  • {place2_holder}
  • {PLACEHOLDER1}
  • {Place-Holder}

バージョン 1.2.x 以降では、これも有効です。

  • {Place.Holder}

無効な名前は例えば下記のようになります。

  • { Placeholder 3 } (空白が含まれている)
  • {place*holder} (使用できない文字が含まれている)

ブロック

ブロックの書式は次のようになります。


<!-- BEGIN [0-9A-Za-z_-]+ -->
... ブロックの内容 ...
<!-- END [0-9A-Za-z_-]+ -->

バージョン 1.2.x 以降では、ブロック定義にドットも使用することができます。


<!-- BEGIN [\.0-9A-Za-z_-]+ -->
... ブロックの内容 ...
<!-- END [\.0-9A-Za-z_-]+ -->

ブロック名のルールはプレースホルダと同様です。 プレースホルダとは対照的に、 ブロックのマークアップでは空白を入れなければなりません。

ブロックの入れ子(ネスティング)は許されますが、解析に注意深くなってください。 最も深い内部のブロックを最初にセットし解析しなければならず、 次に、内側から外側に着手し、解析するようにしなければなりません。

IT では、全体のテンプレートファイルはそれ自体が "__global__" と呼ばれるメタブロックの中で、 入れ子になっています。ほとんどのブロック関連の関数は、 デフォルトのブロック名としてこれを使用します。 ブロックに関連するほとんどの機能は、 デフォルトとしてこのブロック名を使用します。

使用例

テンプレート


<html> 
 <table border> 
<!-- BEGIN row --> 
  <tr>
<!-- BEGIN cell -->  
   <td>
    {DATA}
   </td>
<!-- END cell -->  
  </tr>
<!-- END row --> 
 </table> 
</html>

スクリプト

<?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"truetrue);

  foreach(
$data as $name) {
    foreach(
$name as $cell) {
        
// データを内側のブロックに代入します
        
$tpl->setCurrentBlock("cell") ;
        
$tpl->setVariable("DATA"$cell) ;
        
$tpl->parseCurrentBlock("cell") ;
    }

     
// 外側のブロックをパースします
     
$tpl->parse("row");
  }
  
// 結果を表示します
  
$tpl->show();

?>

出力

   
<html>
 <table border>
  <tr>
   <td>
    Stig
   </td>
   <td>
    Bakken
   </td>
  </tr>
  <tr>
   <td>
    Martin
   </td>
   <td>
    Jansen
   </td>
  </tr>
  <tr>
   <td>
    Alexander
   </td>
   <td>
    Merz
   </td>
  </tr>
 </table>
</html>
HTML_Template_IT (Previous) コンストラクタ (Next)
Last updated: Thu, 31 Jul 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.