3.3 KiB
Maron テンプレートの仕組み
Maron は Little Beast のカスタム HTML テンプレートエンジンです。
構文
構文は以下の通りです:
{@ include(common/header.maron) @} // これは別の Maron ファイルを含めます。
// シングルクォートやダブルクォートを
// 追加しないで下さい!
{@ kys($var) @} // これは変数を読み易い形式で出力し、
// その後テンプレートの残りの実行を終了します。
{@ if (true) @}
// 何かを実行
{@ elif (null) @}
// 別の事を実行
{@ else @}
// その他を実行
{@ endif @}
{@ foreach ($array as $value) @}
{{ $value }}<br />
{@ endforeach @}
{@ foreach ($array as $key => $value) @}
{{ $key }}: {{ $value }}<br />
{@ endforeach @}
{@ for ($i = 0; $i < 10; $i++) @}
{{ $i }}<br />
{@ endfor @}
{# This is a comment #}
{{ $var }} // これは特殊文字をエスケープして変数を出力します
{{{ $var }}} // これは変数をそのままの形で出力します
{$ $var = 200 $} // これは $var を 200 として定義します
{! echo "hello world"; !} // これは生の PHP コードをそのまま実行します
コントローラー機能
更に、Little Beast では Maron テンプレート内で使用出来る
コントローラー用の機能も提供しています。
多言語ウェブサイトを使用する場合、
new Template() の後にその言語のルートディレクトリを指定出来ます。
但し、これには /view ディレクトリ内にそれらのルートディレクトリも
設定する必要があります。
例えば、構造が /view/en/index.maron の場合、
new Template('/en') と定義します。
然し構造が /view/index.maron の場合は、
単に new Template() とします。
assign()
->assign() メソッドを使用すると、
Maron テンプレートで使用したい変数を割り当てます。
例:
$tmpl = new Template();
$sum = 1 + 1;
$tmpl->assign('total', $sum);
この場合、Maron テンプレートで {{ $total }} を
使用して 2 を出力します。
addCss()
デフォルトでは、 style.css は常に含まれています。
但し、全てのページ又は大部分のページで使用する
予定の物だけを style.css に入れ、
特定のページでのみ使用する予定の全ての物は、
style- の接頭辞を付けた独自のファイルに入れる事をお勧めします。
例えば、お問い合わせページがあり、
そのページでのみ使用する CSS がある場合は、
/public/static に新しい style-contact.css ファイルを作成し、
render メソッドの前に $tmpl->addCss('contact'); を追加します。
render()
render() メソッドは Maron テンプレートの内容を取得し
、ウェブブラウザが理解出来る有効な HTML と PHP に全てを変換します。
Maron ファイルが /view/index.maron の場合、
$tmpl->render('index'); を実行しますが、
/view/en/index.maron の場合、
$tmpl = new Template('/en'); に続いて $tmpl->render('index'); か、
$tmpl = new Template(); に続いて $tmpl->render('en/index'); の
いずれかを実行出来ます。