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

[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を使います。

書き方が煩雑ですが、汎用性がありそうですね。

この記事を書いた人

川井 昌彦
川井 昌彦
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き

1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数

ご質問・ご相談などありましたら
お気軽にお問い合わせください


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Vektor Passport(ライセンス期間1年)
VK Filter Search Pro
Vektor WordPress Solutions
PAGE TOP