MODD SaaSの技術

CMSテンプレート言語文法

CMSテンプレート言語は直接出力に展開されるテキストおよび、 {{ と }} によって囲まれるコマンド要素によって記述されます。

出力テキスト: コマンド要素以外

コマンド要素: {{ コマンド }}

コマンド要素としてはデータ取得コマンド、データ出力コマンド、制御コマンドがあります。基本としてはデータ取得コマンドで取得したデータをデータ出力コマンドを使って出力する、これを制御コマンドによって制御する事でデータを含むページを出力します。

データ取得コマンド

defコマンド

データ出力コマンド

listコマンド

直接出力

データをHTMLとして直接出力します。

{{< データ項目 }}

データ項目にHTMLが登録されている場合に無変換で出力を行います。

HTMLエンコード出力

{{= データ項目 }}

データ項目をHTMLエンコードして出力します。(<は&lt;と出力されます)

URLエンコード出力

{{# データ項目 }}

データ項目をURLエンコードして出力します。

ルーティングリンク整形

{{link ルーティング登録名 ( ルーティングパラメータ名=値 ) }}

ルーティングパラメータ名に指定した値を渡してルーティング登録名へのURLを出力します。

{{link ProductDetail ( ItemId=100 ) }}

ProductDetail が /item/{ItemId} とルーティング登録されている場合、 /item/100が出力されます。

 

制御コマンド

条件付き出力: {{if(条件式)}}条件が成立した場合に出力される内容{{end}}

テンプレート出力: {{template テンプレート名(パラメータ=値, パラメータ=値)}}

指定のテンプレート名で登録されているテンプレートを指定のパラメータ値で呼び出し結果を現在位置に挿入します。

コード埋め込みコマンド

C#コード埋め込み:{{: C# コード }}

テンプレート内部にコードを埋め込みます

定義済み変数

RenderMode 文字列変数

テンプレートエンジンのホスト固有のモード切り替えに使用されます。Webのテンプレートでは利用していません。

電子メール整形時には RenderMode に mail-body を設定すると、メールヘッダとしての解釈を終了し、メール本文の整形モードに切り替わります。

 電子メール整形

RenderOutput  TextWriter変数

テンプレートエンジンの出力が送られるTextWriterを設定または取得します。WebのテンプレートではデフォルトでHTTP応答出力に割り付けされます。

テンプレート出力を StringWriter に配置する事で一時的なバッファを行う例を以下に示します。

{{: var oldRenderOutput = RenderOutput;
    RenderOutput = new System.IO.StringWriter();
}}
この出力は StringWriter へ書きこまれます。
{{: var result = RenderOutput as System.IO.StringWriter();
   RenderOutput = oldRenderOutput;
}}
バッファされた内容「{{=result.ToString()}}」

Context HttpContextBaseプロパティ

現在リクエストのHttpContextを取得します。

Template TemplateHelperプロパティ

テンプレートに対して拡張機能が提供される場合に参照ポイントとして利用されます。

ViewContext ViewContextプロパティ

 ASP.NET MVCにおけるViewContextを参照します。

ViewData ViewDataDictionaryプロパティ

ショッピングカートエンジン等 ASP.NET MVCでのコントローラからの表示データを受け取ります。