« [MT4]ブログ記事を横に並べて高さを揃える | Technical | Opera9.7 を、アドエスに入れる »

[MT4]MTCounterプラグインを標準機能で実現

| コメント(0) | トラックバック(0)

[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

コメントする

月別アーカイブ

twitter