Movable Type 4.1 / MTOS における変数での算術演算子の利用方法

Movable Type 4.1 / MTOS における変数での算術演算子の利用方法

Posted at December 19,2007 12:10 AM
Tag:[MovableType]

昨日エントリーした「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">
関連記事
zenback
人気エントリー
トラックバックURL


トラックバック

Movable Type:繰り返し処理(For)、四則演算 from モカモカ工房
 繰り返し処理のタグの一つにForタグがあります。 <mt:For&nbs... [続きを読む]

Tracked on September 24, 2008 4:19 PM

MTで行うカウントアップ処理 from sawa memo blog
これがMT構築の際によおおおおおおおおおおおおおく使いますね。 特にCMSとして使う場合には使わないことは無いくらいに・・・。 というわけでカウントアップ... [続きを読む]

Tracked on February 26, 2012 12:05 AM
コメント

はじめまして 小粋空間様 

いつくか書籍を拝見させていただき

MTの勉強をしてるけいたといいます

ひとつお聞きしたいんですが

ブログの投稿時に

キーワード、タグ、カテゴリー覧で

こちらが指定してものを自動設定表示させることは

可能でしょうか?

僕の場合毎回同じキーワード、タグ、カテゴリーなので

もし省略できると非常に助かります

アドバイスいただけるとうれしいです

よろしくお願いします

[1] Posted by けいた : December 19, 2007 6:52 AM

>けいたさん
こんばんは。
ご質問の件につきまして、実現可能であれば別途エントリーしたいと思います(現在実験する時間ないので期待しないでください)。
それではよろしくお願い致します。

[2] Posted by yujiro logo : December 29, 2007 11:43 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)