Movable Type のスタティック・パブリッシングでループ以外でも odd と even を出力する方法

2012-03-16
1分で読了
更新: 2025-12-14

目次

リストや表を出力するときに、交互に odd(奇数)や even(偶数)というクラス名などを付けたいことって結構ありますよね。

それを実現する方法としては、jQuery など JavaScript を使う方法が簡単ですが、Movable Type を使っているなら、できればスタティック・パブリッシングで直接出力しておきたいですよね。

MTLoop などの繰り返しタグの中であれば、 などで簡単にできますが、ループの中以外では少し工夫が必要です。

今回は、ループ以外でそれを実現する方法の紹介です。

出力結果サンプル

サンプルとして、次のようなリストに odd、even を交互に付けたいとします。


  • 1 : odd

  • 2 : even

  • 3 : odd

  • 4 : even

  • 5 : odd

  • 6 : even

  • 7 : odd

  • 8 : even

  • 9 : odd

  • 10 : even

テンプレート

まず、odd、even を付けたいソースの手前に、次のテンプレートを挿入します。

<$mt:SetVar name="_count" value="0"$>

<$mt:SetVar name="_count" op="++"$>
<$mt:Var name="_count" op="%" value="2" setvar="_mod"$>
oddeven

このテンプレートの解説は次のとおりです。

変数_countを初期化(=0)します。
<$mt:SetVar name="_count" value="0"$>

mt:SetVarTemplateは、その変数がmt:Varされる場所で変数の内容が展開されます。


変数_countをインクリメント(+1)します。
<$mt:SetVar name="_count" op="++"$>

変数_countを2で割った余り(0か1)を変数_modに入れます。
<$mt:Var name="_count" op="%" value="2" setvar="_mod"$>

余りが1のときは奇数なのでodd、0のときは偶数なのでevenを出力します。
oddeven

この MTSetVarTemplate でセットされた変数 odd_even を、odd か even を交互に出力したい場所で MTVar すればOKです。


  • 1 : <$mt:Var name="odd_even"$>

  • 2 : <$mt:Var name="odd_even"$>

  • 3 : <$mt:Var name="odd_even"$>

  • 4 : <$mt:Var name="odd_even"$>

  • 5 : <$mt:Var name="odd_even"$>

  • 6 : <$mt:Var name="odd_even"$>

  • 7 : <$mt:Var name="odd_even"$>

  • 8 : <$mt:Var name="odd_even"$>

  • 9 : <$mt:Var name="odd_even"$>

  • 10 : <$mt:Var name="odd_even"$>

以上です。ナイス・アイデア。

この記事をシェア

関連記事