Movable Type 4.1 / MTOS における変数での算術演算子の利用方法
昨日エントリーした「Movable Type 4.1 / MTOS における配列とハッシュの利用方法」に加え、MT4.1/MTOS では算術演算子の利用が可能になりました。
詳細は後述しますが、可能な演算は、
- 加算(+)
- 減算(-)
- 乗算(*)
- 除算(/)
- 剰余(%)
- インクリメント(++)
- デクリメント(--)
で、変数の演算結果を同一変数に保持したり、MTIf タグ等での判定や、判定と同時に演算すること等が可能です。
ということで、こちらについても以下に利用方法をまとめてみました。なお、利用可能と思われるテンプレートタグは下記の通りです。
- MTIf
- MTUnless
- MTGetVar
- MTSetVar
- MTSetVarBlock
- MTSetVarTemplate
1.加算
フォーマット
op モディファイアに"+"または"add"を設定します。定義済みの変数に加算する場合は value モディファイアを記述し、加算したい値を設定します。
値を加算のみする場合
<$mt:setvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:setvar name="[変数名]" op="add" value="[加算値]"$>
加算後に表示する場合
<$mt:getvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:getvar name="[変数名]" op="add" value="[加算値]"$>
加算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="+" value="[加算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="add" value="[加算値]" eq="[比較値]">
サンプル
変数hogeに+1した結果を設定
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="+" value="1"$>
変数hogeに+1した結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="+" value="1"$>
変数hogeに+1した結果が2であるかを判定
<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="+" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>
2.減算
フォーマット
op モディファイアに"-"または"sub"を設定します。定義済みの変数に減算する場合は value モディファイアを記述し、減算したい値を設定します。
値を減算のみする場合
<$mt:setvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:setvar name="[変数名]" op="sub" value="[減算値]"$>
減算後に表示する場合
<$mt:getvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:getvar name="[変数名]" op="sub" value="[減算値]"$>
減算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="-" value="[減算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="sub" value="[減算値]" eq="[比較値]">
サンプル
変数hogeから-1した結果を設定
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="-" value="1"$>
変数hogeから-1した結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="-" value="1"$>
変数hogeに-1した結果が2であるかを判定
<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="-" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>
3.乗算
フォーマット
op モディファイアに"*"または"mul"を設定します。定義済みの変数に乗算する場合は value モディファイアを記述し、乗算したい値を設定します。
値を乗算のみする場合
<$mt:setvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:setvar name="[変数名]" op="mul" value="[乗数値]"$>
乗算後に表示する場合
<$mt:getvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:getvar name="[変数名]" op="mul" value="[乗数値]"$>
乗算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="*" value="[乗数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mul" value="[乗数値]" eq="[比較値]">
サンプル
変数hogeに2倍した結果を変数に設定
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="*" value="2"$>
変数hogeを2倍した結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="*" value="2"$>
変数hogeに2倍した結果が6であるかを判定
<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="*" value="2" eq="6">
OK
<mt:else>
NG
</mt:if>
4.除算
フォーマット
op モディファイアに"/"または"div"を設定します。定義済みの変数に除算する場合は value モディファイアを記述し、除算したい値を設定します。
値を除算のみする場合
<$mt:setvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:setvar name="[変数名]" op="div" value="[除数値]"$>
除算後に表示する場合
<$mt:getvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:getvar name="[変数名]" op="div" value="[除数値]"$>
除算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="/" value="[除数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="div" value="[除数値]" eq="[比較値]">
サンプル
変数hogeを2で割った結果を変数に設定
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="/" value="2"$>
変数hogeを2で割った結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="/" value="2"$>
変数hogeを2で割った結果が3であるかを判定
<$mt:setvar name="hoge" value="6"$>
<mt:if name="hoge" op="/" value="2" eq="3">
OK
<mt:else>
NG
</mt:if>
5.剰余
フォーマット
op モディファイアに"%"または"mod"を設定します。定義済みの変数に剰余する場合は value モディファイアを記述し、剰余したい値を設定します。
値を剰余のみする場合
<$mt:setvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:setvar name="[変数名]" op="mod" value="[剰余値]"$>
剰余後に表示する場合
<$mt:getvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:getvar name="[変数名]" op="mod" value="[剰余値]"$>
剰余した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="%" value="[剰余値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mod" value="[剰余値]" eq="[比較値]">
サンプル
変数hogeを3で割った余りを変数に設定
<$mt:setvar name="hoge" value="5"$>
<$mt:setvar name="hoge" op="%" value="3"$>
変数hogeを3で割った余りを表示
<$mt:setvar name="hoge" value="5"$>
<$mt:getvar name="hoge" op="%" value="3"$>
変数hogeを3で割った余りが1であるかを判定
<$mt:setvar name="hoge" value="7"$>
<mt:if name="hoge" op="%" value="3" eq="1">
OK
<mt:else>
NG
</mt:if>
6.インクリメント
「インクリメント」とは、値に1を加算することを指します。
フォーマット
op モディファイアに"++"または"inc"を設定します。なお、定義済みの変数にしかインクリメントすることはできません。
値をインクリメントのみする場合
<$mt:setvar name="[変数名]" op="++"$>
または
<$mt:setvar name="[変数名]" op="inc"$>
インクリメント後に表示する場合
<$mt:getvar name="[変数名]" op="++"$>
または
<$mt:getvar name="[変数名]" op="inc"$>
インクリメントした結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="++" eq="[比較値]">
または
<mt:if name="[変数名]" op="inc" eq="[比較値]">
サンプル
変数hogeをインクリメント
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="++"$>
変数hogeをインクリメントした結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="++"$>
変数hogeをインクリメントした結果が2であるかを判定
<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="++" eq="2">
OK
<mt:else>
NG
</mt:if>
7.デクリメント
「デクリメント」とは、値から1を減算することを指します。
フォーマット
op モディファイアに"--"または"dec"を設定します。なお、定義済みの変数にしかデクリメントすることはできません。
値をデクリメントのみする場合
<$mt:setvar name="[変数名]" op="--"$>
または
<$mt:setvar name="[変数名]" op="dec"$>
デクリメント後に表示する場合
<$mt:getvar name="[変数名]" op="--"$>
または
<$mt:getvar name="[変数名]" op="dec"$>
デクリメントした結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="--" eq="[比較値]">
または
<mt:if name="[変数名]" op="dec" eq="[比較値]">
サンプル
変数hogeをデクリメント
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="--"$>
変数hogeをデクリメントした結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="--"$>
変数hogeをデクリメントした結果が1であるかを判定
<$mt:setvar name="hoge" value="2"$>
<mt:if name="hoge" op="--" eq="1">
OK
<mt:else>
NG
</mt:if>
8.注意事項
文字列や数字を含んだ文字列に演算を行っても何も行われません。また、ベータ1a版の動作確認では、他のリスト系テンプレートタグとの組み合わせでは初期値が1でないと機能しないようです(下記)。
NG(初期値0)
<$mt:setvar name="hoge" value="0"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">
OK(初期値1)
<$mt:setvar name="hoge" value="1"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">
- Movable Type 4.15 公開ベータテスト開始
- Movable Type 4.1 リリース
- Movable Type 4.1 リリース候補第2版公開
- Movable Type 4.1 リリース候補版公開
- Movable Type 4.1 ベータ 3 リリース
- 予約変数一覧 for Movable Type 4.1
- MTLoop タグによる配列変数・ハッシュ変数の制御
- Movable Type 4.1 ベータ 2 リリース
- Movable Type 4.1 追加タグ一覧
- Movable Type 4.1 ベータテスト開始
≫ Movable Type:繰り返し処理(For)、四則演算 from モカモカ工房
繰り返し処理のタグの一つにForタグがあります。 <mt:For&nbs... [続きを読む]
≫ MTで行うカウントアップ処理 from sawa memo blog
これがMT構築の際によおおおおおおおおおおおおおく使いますね。 特にCMSとして使う場合には使わないことは無いくらいに・・・。 というわけでカウントアップ... [続きを読む]
はじめまして 小粋空間様
いつくか書籍を拝見させていただき
MTの勉強をしてるけいたといいます
ひとつお聞きしたいんですが
ブログの投稿時に
キーワード、タグ、カテゴリー覧で
こちらが指定してものを自動設定表示させることは
可能でしょうか?
僕の場合毎回同じキーワード、タグ、カテゴリーなので
もし省略できると非常に助かります
アドバイスいただけるとうれしいです
よろしくお願いします
>けいたさん
こんばんは。
ご質問の件につきまして、実現可能であれば別途エントリーしたいと思います(現在実験する時間ないので期待しないでください)。
それではよろしくお願い致します。