TopMovable Type > バージョン別 > 4.1 > Movable Type 4.1 / MTOS における変数での算術演算子の利用方法
2007年12月19日

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

Posted at December 19,2007 12:10 AM
Category:[4.1, MTOS, テンプレートタグ]
Tag:[]

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


コメント

はじめまして 小粋空間様 

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

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

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

ブログの投稿時に

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

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

可能でしょうか?

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

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

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

よろしくお願いします

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

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

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

*必須



お知らせ:2008年5月現在、多忙のため、7月頃までコメントを速やかに回答できない状態が続きます。ご質問の内容によっては回答が7月以降になる可能性がありますので、予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用

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

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

Now loading...
Entries of this Category
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
BlogPeople
Now loading...
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 4.1
 
List Me!