テンプレートタグ

テンプレートタグはデリミタ( {} )によって囲まれます。
(デリミタは変更可能です)

{keyword}

基本的に、デリミタで囲まれた文字列を
Rampart にセットされた変数のキーとして判断し、
テンプレートタグ全体を対応する値に置き換えて出力します。

予約語

テンプレートタグの keyword に特定の文字列を指定すると、
セットされた値の置き換えではなく、特別な動作を行います。

予約語は以下の通りです。 {#ld}
{#rd}
{#literal}string{/literal}
{#file "filename"}
{#include "filename"}
Rampart のテンプレートエンジンとしての予約語は
これだけです。

#ld, #rd

{#ld}, {#rd} は、それぞれ
「左デリミタ」「右デリミタ」に置き換わります。

// 次の例では、
// {#ld} は "{" に、{#rd} は "}" に置き換わるので、
// "{}" が出力される。

$ramp->strDisplay("{#ld}{#rd}");

#literal, /literal

たとえば、テンプレートファイルの中に
JavaScrpt を記述する場合など、
デリミタで囲まれた文字列をテンプレートタグとして
処理して欲しくない場合があります。

デリミタとして使用する文字を {#ld}, {#rd} で記述することで
テンプレートタグとしての処理を回避することは可能ですが、
数が多いといちいち書き換えるのは面倒です。

そこで {#literal} string {/literal} を使用することで、
string に出現するデリミタはテンプレートタグとして
処理されません。

// 次の例では、
// {#literal}{/literal}に囲まれた文字列に
// 出現するデリミタは無視されるので、
// "{abc}" はそのまま出力される。

$ramp->strDisplay("{#literal}{abc}{/literal}");

#file, #include

テンプレートの中に別のファイルを埋め込みたい場合は
{#file "filename"}, {#include "filename"}
を使用します。

{#file} と {#include} の違いは、指定したファイルの内容を
{#file} がそのまま文字列として埋め込むのに対して、
{#include} はPHPプログラムとして埋め込む点です。

sample.html <?php print(1 + 1); ?>

sample.php // sample.html を #file で埋め込む。
$ramp->strDisplay('file:{#file "include.html"}');

// sample.html を #include で埋め込む。
$ramp->strDisplay('include:{#include "include.html"}');

出力結果は以下のようになります。 file:<?php print(1 + 1); ?>

include:2

{#file} が sample.html の内容をそのまま埋め込んでいるのに対し、
{#include} は sample.html の内容をPHPプログラムとして実行し、
実行結果の標準出力を埋め込んでいます。
したがって、1 + 1 の計算結果である 2 が埋め込まれます。

補足

{#file} と {#include} は
使い方を誤ると大きなセキュリティホールになりますので、
慎重にご使用ください。

特に {#include} の使用には、細心の注意を払ってください。