テンプレートタグで利用できる演算関数(opモディファイア)

op モディファイアを利用して、テンプレートタグで四則計算が可能です(ver.2.58以降)。

これにより、さまざまな計算やプログラミングロジックをテンプレートタグだけで実現できます。

「mtvar」「mt:setvar」「mt:setvarblock」「mt:if」「mt:unless」「mt:elseif」タグが「op」モディファイアをサポートしています。「mt:setvartemplate」「mt:getvar」「mt:else」「mt:ifgetvar」は「op」モディファイアをサポートしていません。

  • add または + : 加算
  • sub または - : 減算
  • mul または * : 乗算
  • div または / : 除算
  • mod または % : 剰余
  • inc または ++ : インクリメント
  • dec または -- : デクリメント

op モディファイアを使用する場合は、name モディファイアと value モディファイアをセットで設定します。
また、op モディファイアに inc(++) または dec(--) を指定した場合、value モディファイアは一緒に設定しても無視されます。

テンプレートタグごとの op モディファイアの使用例と動作

テンプレートタグ モディファイアの記述例 動作
mt:var,  mt:setvar name="foo" value="3" op="+" 変数 foo に対して、op モディファイアを value モディファイアとともに処理し、演算結果を変数 foo に格納します。
変数 foo が未定義の場合、op モディファイアは無視され、value モディファイアの値が変数に格納されます。
mt:setvarblock name="foo" op="+" 変数 foo に対して、op モディファイアをブロックタグの評価結果とともに処理し、演算結果を変数 foo に格納します。
変数 foo が未定義の場合、op モディファイアは無視され、ブロックタグの評価結果がそのまま変数に格納されます。
mt:if,  mt:elseif,  mt:unless name="foo" value="3" op="+" eq="7" 変数 foo に対して、op モディファイアを value モディファイアとともに処理します。
演算結果は変数 foo に格納されません。
変数の値を変えずに演算結果で条件判別する場合に使用します。