エントリー本文
Counter プラグイン
Movable Type のエントリーリストやコメントリスト、あるいはアーカイブリスト等で、例えば「リストの 3 番目からスタイルを変更したい」とか「偶数・奇数で色を変更したい」ということがあると思いますが、Movable Type で用意されているタグには残念ながらそのような機能はありません。*1
この「カウントする」という機能が必要な質問をひとつ頂いており、思案していたところ、有難いことにエムロジック株式会社様より下記のプラグインが公開されました。
エムロジック放課後プロジェクト:MovableType用Counter Plugin
これを使えば、リストでカウンタを必要とするカスタマイズ類はほぼ全て満足できるのではないかと思います。
2009.05.28 追記
Movable Type 4.1 以降であれば、標準テンプレートタグで実現できます(関連記事「Movable Type 4.1 / MTOS における変数での算術演算子の利用方法」)。
配布サイトのドキュメントで利用方法が説明されていますが、ここでもタグの基本的な設定方法とサンプルをいくつか紹介しておきます。ドキュメントに掲載されている、エントリータイトルだけを表示するというシンプルなリストを例にアレンジしていきます。
プラグインの導入方法は配布サイトをご覧ください。
基本は、カウントしたいリスト全体を MTCounter タグで括ります。
<MTCounter> <MTEntries> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.1 MTCounter タグ
このプラグインは自律的にカウントアップする訳ではないので、リスト1.2 のように、カウンタ値を +1 更新したい場所に MTCounterPlus タグを挿入します。なおこのリストではまだ何も表示されません。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.2 MTCounterPlus タグ
カウンタ値を -1 更新したい場合は MTCounterMinus タグを挿入します。この場合は初期値を MTCounterSetValue タグで設定すると良いでしょう。
リスト1.3 はカウンタの初期値10でエントリータイトルを表示する毎にカウンタを -1 します(これもまだ何も表示されません)。
<MTCounter> <$MTCounterSetValue value="10"$> <MTEntries> <$MTCounterMinus$> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.3 MTCounterMinus / MTCounterSetValue タグ
カウンタ値を表示する場合は MTCounterValue タグを用います。MTCounterSetValue タグを使わない場合のカウンタ初期値は 0 です。
リスト1.4 はエントリータイトルの後にカウンタ値を表示します。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$>[<$MTCounterValue$>]<br /> </MTEntries> </MTCounter>- リスト1.4 MTCounterValue タグ
リスト1.4 を実行(再構築)すると、MTCounterValue の部分に "1,2,3,4,5 ..." と表示されます。MTCounterValue の後方に MTCounterPlus が置かれていれば、"0,1,2,3,4 ..." と表示されます。
現在のカウンタ値と比較する場合は、MTCounterIfEqual タグで判定します。このタグに記述した value 属性の値とカウンタ値を比較します。
リスト1.5 は5番目のリスト表示の後に hr 要素を挿入します。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$><br /> <MTCounterIfEqual value="5"><hr /></MTCounterIfEqual> </MTEntries> </MTCounter>- リスト1.5 MTCounterIfEqual タグ
さらにカウンタ値との大小を比較する場合は MTCounterIfLess タグおよび MTCounterIfMore タグを用います。
リスト1.6 は、1-4番目のリスト、5番目のリスト、5番目以降のリストに、それぞれ異なる class 属性を与えています(分かりやすくするために span 要素全体を括っていますが class 属性あるいは class 属性値部分のみを括るという方法もあります)。
<MTCounter> <MTEntries> <$MTCounterPlus$> <MTCounterIfLess value="5"><span class="a"></MTCounterIfLess> <MTCounterIfEqual value="5"><span class="b"></MTCounterIfEqual> <MTCounterIfMore value="5"><span class="c"></MTCounterIfMore> <$MTEntryTitle$></span><br /> </MTEntries> </MTCounter>- リスト1.6 MTCounterIfLess / MTCounterIfMore タグ
カウンタ値の偶数・奇数によって表示を変える方法、および カウンタを n で割った余りが value 属性値と等しい時に表示する場合は、MTCounterIfOdd / MTCounterIfEven / MTCounterIfMod タグを利用します。サンプルは Counter プラグイン ドキュメントを参照してください。
*1:これに近い機能として、MTEntries タグの lastn 属性と offset 属性の組み合わせによる実現があります。
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)
- IE7 の CSS ハック
- Movable Type 4.1 / MTOS における変数での算術演算子の利用方法
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その1:概要)
- カウンタ設置方法
- ダイナミック・パブリッシングで perl のプラグインを利用する
- Movable Type プラグイン一覧
- Movable Type プラグイン一覧(MT4対応)
- Movable Type 4.1 カスタムフィールドの使用方法
- Movable Type で再構築エラーになる場合の原因と対処
≫ LoopLimiter Plugin from greenplastic.net
Movable Type のあらゆるコンテナタグの中で、たとえば『4回目毎に出現するアイテムに異なったスタイルを適用したい』とかいうような局所的なリクエ... [続きを読む]
≫ スマートで高機能!Counterプラグイン from あんちもん2.Lab
先日公開された、Counterプラグイン。拙作 AutoIncrementalVar プラグインとどう違うのか検証。 [続きを読む]
≫ カウンタによって表示を変える from MovableType備忘録
先日、小粋空間さんのところでCounter プラグインというのが紹介されてました。 このプラグイン、元はエムロジック放課後プロジェクト::MovableT... [続きを読む]
≫ Counter Pluginでエントリーのリストをカウント from WebRoom
MovableTypeの管理画面にあるテンプレート一覧のようにリストを交互に色... [続きを読む]
≫ Counter プラグインで更新順フィード解決 from a.sueの日記 ブログ版
小粋空間でCounterプラグインが紹介されているのを見て、これで更新順の最初か... [続きを読む]
≫ MTCounterというもの。 from Blog
仕事の関係でMTを色々触っているけど、今回なんかカウントできるものないかなーって... [続きを読む]
≫ [MT4]MTCounterプラグインを標準機能で実現 from Cherry Pie Web
MT4.1以降では、MTCounterプラグインの機能が、標準機能で代替出来ます。 [続きを読む]
<$MTCounterSetValue value="10"$>
のvalue値に数字以外のものを指定したいのですが、それはできないのでしょうか。
5件ずつカウントダウンさせながら表示させているのですが、5以下は<MTCounterIfEqual value="1"><MTCounterSetValue value="1"></MTCounterIfEqual>
とひとつずつ指定してやることで実現できました。
5以上になったらカウンタの最大値からカウントダウンさせたいので
<MTCounterIfMore value="5"><MTCounterSetValue value="<$MTEntryCommentCount$>"></MTCounterIfMore>
としたいのです。
valueに変数はムリなのでしょうか。何かいお知恵があったら教えてください。
>chacoさん
こんばんは。
ご質問の件は TagInvoke プラグインを利用すれば可能かもしれません。
あとすいませんが、希望される動作が上記の文言からでは理解できませんでした。MTCounter 全体のタグを貼り付けてもらった方がいいかもしれません。
それではよろしくお願い致します。
お返事が遅れました。
詳細はお知らせできないのですが、質問の件は、CounterプラグインとCommentOrderNumberByDescend プラグインを組み合わせて実現することができました。ありがとうございました。
