master
ブランチ master
LittleBeast / doc / ja / maron.md

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'); のいずれかを実行出来ます。