master
ブランチ master
LittleBeast / doc / ja / maron.md
3.3 KB、89行 表示 生 Blame 履歴
1# Maron テンプレートの仕組み
2Maron は 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()` メソッドを使用すると、
57Maron テンプレートで使用したい変数を割り当てます。
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 に全てを変換します。
84Maron ファイルが `/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いずれかを実行出来ます。