« [MT4]ブログ記事を横に並べて高さを揃える | Technical | Opera9.7 を、アドエスに入れる »
[MT4]ブログ記事を横に並べて高さを揃えるで、MTCounterプラグインを紹介しましたが、mixiでmiyaさんにコメントをいただいて、いろいろ調べた結果、MT4.1以降なら、標準機能で実現できることがわかりました。
ポイントは、opモディファイアです。
まず、<MTSetVar name="xxx" value="n"> で、変数を設定します。
xxx は任意の変数名、nは初期値です。
そして、ループの中で <MTSetVar name="xxx" op="++">とやると、xxxの値が1加算されます。
値を評価するときは、MTIfタグを使います。
たとえば、xxxの値が、3で割り切れるかどうかを判断するには、
<MTIf name="xxx" value="3" op="mod" eq="0">
とすれば良いわけです。
Movable Typeのヘルプ「MT4.1で強化されるMTタグの新機能」によると、下記が使えます。
- add または +
- 加算
- sub または -
- 減算
- mul または *
- 乗算
- div または /
- 除算
- mod または %
- 剰余
- inc または ++
- インクリメント
- dec または --
- デクリメント
これを、MTCounterプラグインの機能に置き換えてみると、
MTCounter → MTSetVar name="xxx" value="n"(初期値設定)
MTCounterValue → MTGetVar name="xxx"(カウンタ値を表示)
MTCounterPlus → MTSetVar name="xxx" op="++"(加算)
MTCounterMinus → MTSetVar name="xxx" op="--"(減算)
MTCounterIfEqual → MTIf name="xxx" eq="x"(カウンタ値がxと同じ)
MTCounterIfLess → MTIf name="xxx" lt="x"(カウンタ値がxより小さい)
MTCounterIfMore → MTIf name="xxx" gt="x"(カウンタ値がxより大きい)
MTCounterIfOdd → MTIf name="xxx" value="2" op="mod" ne="0"(奇数)
MTCounterIfEven → MTIf name="xxx" value="2" op="mod" eq="0"(偶数)
MTCounterIfMod → MTIf name="xxx" value="n" op="mod" eq="x"(nで割った余りがx)
と言う感じで、いちおう、標準機能で代替出来ます。
奇数偶数の判断はできないので、2で割って余りが出るかどうかで判断します。
サンプル
ブログ記事一覧で、3件ごとにアホになる<MTSetVar name="loopcount" value="0"> <MTEntries> <MTEntryTitle><MTEntryBody> <MTSetVar name="loopcount" op="++"> <MTIf name="loopcount" value="3" op="mod" eq="0">アホ!</MTIf> </MTEntries>
ここで注意です。
MTSetVar に opモディファイアをつけると、演算した後の値が格納されます。
演算するだけで変数の値を変えたくない場合は、MTGetVarを使います。
書き方が煩雑ですが、汎用性がありそうですね。
トラックバック(0)
トラックバックURL: http://www.cherrypieweb.com/mt5/mt-tb.cgi/152


コメントする