| 1 | # Maron テンプレートの仕組み |
| 2 | Maron は Little Beast のカスタム HTML テンプレートエンジンです。 |
| 3 | |
| 4 | ## 構文 |
| 5 | |
| 6 | 構文は以下の通りです: |
| 7 | |
| 8 | ``` |
| 9 | {@ include(common/header.maron) @} // これは別の Maron ファイルを含めます。 |
| 10 | // シングルクォートやダブルクォートを |
| 11 | // 追加しないで下さい! |
| 12 | |
| 13 | {@ kys($var) @} // これは変数を読み易い形式で出力し、 |
| 14 | // その後テンプレートの残りの実行を終了します。 |
| 15 | |
| 16 | {@ if (true) @} |
| 17 | // 何かを実行 |
| 18 | {@ elif (null) @} |
| 19 | // 別の事を実行 |
| 20 | {@ else @} |
| 21 | // その他を実行 |
| 22 | {@ endif @} |
| 23 | |
| 24 | {@ foreach ($array as $value) @} |
| 25 | {{ $value }}<br /> |
| 26 | {@ endforeach @} |
| 27 | |
| 28 | {@ foreach ($array as $key => $value) @} |
| 29 | {{ $key }}: {{ $value }}<br /> |
| 30 | {@ endforeach @} |
| 31 | |
| 32 | {@ for ($i = 0; $i < 10; $i++) @} |
| 33 | {{ $i }}<br /> |
| 34 | {@ endfor @} |
| 35 | |
| 36 | {# This is a comment #} |
| 37 | {{ $var }} // これは特殊文字をエスケープして変数を出力します |
| 38 | {{{ $var }}} // これは変数をそのままの形で出力します |
| 39 | {$ $var = 200 $} // これは $var を 200 として定義します |
| 40 | {! echo "hello world"; !} // これは生の PHP コードをそのまま実行します |
| 41 | ``` |
| 42 | |
| 43 | ## コントローラー機能 |
| 44 | 更に、Little Beast では Maron テンプレート内で使用出来る |
| 45 | コントローラー用の機能も提供しています。 |
| 46 | 多言語ウェブサイトを使用する場合、 |
| 47 | `new Template()` の後にその言語のルートディレクトリを指定出来ます。 |
| 48 | 但し、これには `/view` ディレクトリ内にそれらのルートディレクトリも |
| 49 | 設定する必要があります。 |
| 50 | 例えば、構造が `/view/en/index.maron` の場合、 |
| 51 | `new Template('/en')` と定義します。 |
| 52 | 然し構造が `/view/index.maron` の場合は、 |
| 53 | 単に `new Template()` とします。 |
| 54 | |
| 55 | ### assign() |
| 56 | `->assign()` メソッドを使用すると、 |
| 57 | Maron テンプレートで使用したい変数を割り当てます。 |
| 58 | |
| 59 | 例: |
| 60 | ``` |
| 61 | $tmpl = new Template(); |
| 62 | |
| 63 | $sum = 1 + 1; |
| 64 | $tmpl->assign('total', $sum); |
| 65 | ``` |
| 66 | |
| 67 | この場合、Maron テンプレートで `{{ $total }}` を |
| 68 | 使用して `2` を出力します。 |
| 69 | |
| 70 | ### addCss() |
| 71 | デフォルトでは、 `style.css` は常に含まれています。 |
| 72 | 但し、全てのページ又は大部分のページで使用する |
| 73 | 予定の物だけを `style.css` に入れ、 |
| 74 | 特定のページでのみ使用する予定の全ての物は、 |
| 75 | `style-` の接頭辞を付けた独自のファイルに入れる事をお勧めします。 |
| 76 | 例えば、お問い合わせページがあり、 |
| 77 | そのページでのみ使用する CSS がある場合は、 |
| 78 | `/public/static` に新しい `style-contact.css` ファイルを作成し、 |
| 79 | `render` メソッドの前に `$tmpl->addCss('contact');` を追加します。 |
| 80 | |
| 81 | ### render() |
| 82 | `render()` メソッドは Maron テンプレートの内容を取得し |
| 83 | 、ウェブブラウザが理解出来る有効な HTML と PHP に全てを変換します。 |
| 84 | Maron ファイルが `/view/index.maron` の場合、 |
| 85 | `$tmpl->render('index');` を実行しますが、 |
| 86 | `/view/en/index.maron` の場合、 |
| 87 | `$tmpl = new Template('/en');` に続いて `$tmpl->render('index');` か、 |
| 88 | `$tmpl = new Template();` に続いて `$tmpl->render('en/index');` の |
| 89 | いずれかを実行出来ます。 |