a-blog cms で複数選択できるカスタムフールドをどうにかするためのいろんなことをちょっとまとめます。
(現時点の私がもっている最新(1.5.1 beta1)で動作検証してます。)

複数選択のカスタムフィールドの書き方

まずそもそもどうか書くのかですが、これは簡単。特に考える事無く複数選択できる(例ではcheckboxにします)フォームを書いてしまいます。
注意点としては

  • name 属性に複数の場合は [] を付けること。
  • 編集されるときに以前の値があればそれを反映するために checked の属性をセットすること

checked属性(SELECTのフォームだと selected )については a-blog cms には、

{キー:checked#値}

という書き方でキーに値がセットされていれば checkd を出力してくれる機能があります。
これで以下のようなフォームができます。

<ul>
	<li><label><input type="checkbox" name="label[]" value="PHP" {label:checked#php}>php</label></li>
	<li><label><input type="checkbox" name="label[]" value="Ruby" {label:checked#Ruby}>Ruby</label></li>
	<li><label><input type="checkbox" name="label[]" value="Python" {label:checked#Python}>Python</label></li>
	<li><label><input type="checkbox" name="label[]" value="Perl" {label:checked#Perl}>Perl</label></li>
</ul>
<input type="hidden" name="field[]" value="label" />

最後の1行はお決まりの label はカスタムフィールドですよとシステムに教えてあげるもの。
これで複数選択のチェックボックスができました。

表示する

できあがったカスタムフィールドで複数を選択して、実際に表示するときは

<!-- BEGIN label:loop -->{label}<!-- END label:loop -->

と書けばズラズラと表示されます。
変数の前にglueを入れる事で区切りも付けれるようですね。

<!-- BEGIN label:loop --><!-- BEGIN glue -->,<!-- END glue -->{label}<!-- END label:loop -->

touchで表示を切り替えたいとき

a-blog cms のカスタムフィールドでは touch を使う事で表示できます。
例えば、

<!-- BEGIN label:touch#Ryby -->ルビー<!-- END label:touch#Ruby -->

というように。
・・・ですが、複数選択ではそうはいきませんが、何番目の値かを数字で指定することで同じ事ができます。

<!-- BEGIN label[1]:touch#Ryby -->ルビー<!-- END label[1]:touch#Ruby -->

気をつけないといけないのは、この数字がいつも同じとは限らないことです。なぜなら登録時のフォームの並びや、実際にはチェックされていない値は保存されずに番号が飛んでしまったりするためです。

{label[0]}

のように数字を付けて値を表示してみると状況がわかると思います。
これを回避する為に、登録フォームで数字を指定しておきます。

<ul>
	<li><label><input type="checkbox" name="label[1]" value="PHP" {label:checked#php}>php</label></li>
	<li><label><input type="checkbox" name="label[2]" value="Ruby" {label:checked#Ruby}>Ruby</label></li>
	<li><label><input type="checkbox" name="label[3]" value="Python" {label:checked#Python}>Python</label></li>
	<li><label><input type="checkbox" name="label[4]" value="Perl" {label:checked#Perl}>Perl</label></li>
</ul>
<input type="hidden" name="field[]" value="label" />

これで値が無くても番号通りに記録されます

おまけ

単にリスト表示の色を変更する(class名を指定するなど)であればこんな方法もあります

<span class="{label:checked#PHP}[active_chk]">PHP</span>
<span class="{label:checked#Ruby}[active_chk]">Ruby</span>
<span class="{label:checked#Python}[active_chk]">Python</span>
<span class="{label:checked#Perl}[active_chk]">Perl</span>

と、テンプレートを用意して、校正オプション active_chk を追加します。
校正オプションは /php/ACMS/User の中の Corrector.php に以下のメソッドを追加

function active_chk($txt, $args = array())
{
    $ret = '';
    if(mb_strpos($txt,'checked="checked"') !== FALSE){
        $ret = 'checked';
    }
    return $ret;
}

これで上記テンプレートで選択されている値だけ class="checked" が設定されます。