linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

MTでカスタムフィールドのチェックボックスの値をまとめて表示する

みなさん、こんにちは、まーしーです
今日もMTネタで。

Movable Typeのカスタムフィールドにはいくつか種類がありますが、ブログ記事にチェックボックスを追加してチェックがあるときは○○をする、といった事が可能になります。
ただ、MT標準の機能ではチェックボックスをグループでは使いにくいです。
基本的には1つずつカスタムフィールドを追加していくかんじですね。

チェックボックスのカスタムフィールドをグルーピングする

A,B,C,D,E,F(それぞれのMTタグはMTcustomAなど)
とチェックボックスがあってチェックが入っている時にこれを表示する場合を簡単に書くと

<MTIf tag="customA">A</MTIf>、<MTIf tag="customB">B</MTIf>、<MTIf tag="customC">C</MTIf>.....

こんな感じになるかとおもいますが、区切り文字(この場合は「、」)をどう表示するか、というのを考えないといけないですね。
そこで、チェックボックスが入っているものをハッシュに入れるという方法をとってみたいと思います。

ソースの全体はこんな感じになりそうです。

<MTIf tag="customA"><MTSetVarBlock name="push(Fields)">A</MTSetVarBlock></MTIf>
<MTIf tag="customB"><MTSetVarBlock name="push(Fields)">B</MTSetVarBlock></MTIf>
......
<MTVar name="count(Fields)" setvar="Fieldscount">
<MTIf name="Fieldscount" ge="1">
値:<MTFor var="i" from="0" to="$Fieldscount" glue="、"><$MTVar name="Fields[$i]"$></MTFor>
<MTElse>
値:無し
</MTIf>

個別に見ていきます。

こんなかんじでカスタムフィールドに値があるときFieldsに追加していきます。

<MTIf tag="customA"><MTSetVarBlock name="push(Fields)">A</MTSetVarBlock></MTIf>
<MTIf tag="customB"><MTSetVarBlock name="push(Fields)">B</MTSetVarBlock></MTIf>

Fieldsの数を変数にセットします。

<MTVar name="count(Fields)" setvar="Fieldscount">

条件分岐して値が0かどうかで切り替えます。

<MTIf name="Fieldscount" ge="1">

0でないときは表示させる必要があるので、こんなかんじで

<MTFor var="i" from="0" to="$Fieldscount" glue="、"><$MTVar name="Fields[$i]"$></MTFor>

ループさせることが出来ますし、区切り文字も指定することが可能になります。これで値が入っている時は
値:(A、B)
とか表示されますね。

個人的にハッシュは使いこなせているとは言い難いのでもうすこし積極的に使いたいところです。
oscarさんも先日のエントリーでハッシュについて書かれていましたのでまだまだ使える所は広そうです。

プラグインでも対応可能

グループはプラグインなどで対応も可能そうです。さがしてみたところではこういったプラグインもあるようです。

More Custom Fields | Plugins | Eat Drink Sleep Movable Type
http://eatdrinksleepmovabletype.com/plugins/more_custom_fields/index.php

場合によってはこれらを使うなどの選択肢もあるかも知れませんね。