Movable Type でカテゴリを1つだけしか選択させない方法




Movable Type version 5.01 でサイト構築しています。

社内スタッフにそれぞれブログアカウントを発行し、記事を書いてもらっています。


スタッフには、カテゴリー追加や編集などの権限は与えておらず、
書いた記事に対して、こちらで予め設定したカテゴリにチェックを入れれるだけです。


通常の設定だと、1つの記事に対して複数のカテゴリを設定出来きてしまうので、
出来れば、1記事1カテゴリしか選べないような仕組みにしたいと思っています。


カテゴリのチェック形式が「チェックボタン」なので、
これを「ラジオボタン」に出来れば、1つしか選べないようにできるのでは?

と考えておりますが、実装方法が分かりません。


上記やり方ではなくても、カテゴリを1つだけしか選べないようにする方法はございますでしょうか?


皆様のお知恵を貸して下さい。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2010/09/24 01:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント70pt

方法1.チェックボックスからラジオボタンに変更します。

・「tmpl/cms/include/category_selector.tmpl」

12行目に次の行があります。

                        <input type="<mt:if name="object_type" eq="page">radio<mt:else>checkbox</mt:if>" name="<mt:if name="object_type" eq="entry">add_</mt:if>category_id<mt:if name="object_type" eq="entry">_[#= item.id #]</mt:if>" class="add-category-checkbox" <mt:if name="category_is_selected">checked="checked"</mt:if> /> [#|h item.label #]

上記を次のように変更します。

                        <input type="<mt:if name="object_type" like="(page|entry)">radio<mt:else>checkbox</mt:if>" name="<mt:if name="object_type" eq="entry">add_</mt:if>category_id" class="add-category-checkbox" <mt:if name="category_is_selected">checked="checked"</mt:if> /> [#|h item.label #]

方法2.カテゴリが2つ以上選択された場合に、警告メッセージを表示します。(※メッセージを無視して選択する事は可能です。)

・「tmpl/cms/edit_entry.tmpl」

229行目に次の記述があります。

                [# if ( !items.length ) { #]
                    <span class="disabled">[#|h trans("None selected") #]</span>
                    [#* return #]
                [# } #]

この次に処理を追加して次のように変更します。

                [# if ( !items.length ) { #]
                    <span class="disabled">[#|h trans("None selected") #]</span>
                    [#* return #]
                [# } #]
                // ここに次の4行を追加します。
                [# if ( items.length > 1 ) { alert("カテゴリが二つ以上選択されました。\n一つだけ選択してください。"); #]
                    <span class="disabled">[#|h trans("Two or more were selected") #]</span>
                    [#* return #]
                [# } #]

さらに「mt-static/mt_ja.js」の適当な場所に次の1行を追加します。

Lexicon['Two or more were selected'] = '二つ以上選択されました。一つだけ選択してください';

これでカテゴリが2つ以上選択された場合に警告メッセージを表示して、カテゴリの選択状態を表示する箇所にもメッセージを表示します。

方法2はメッセージを表示するだけですので、実際には2つ以上のカテゴリを選択する事ができてしまいますが、どちらでも好きな方法を試してみてください。

id:tenmillion

回答ありがとうございます。

方法2の解説に「方法2はメッセージを表示するだけですので、実際には2つ以上のカテゴリを選択する事ができてしまいます」とありましたので、出来れば1つしか選択出来ないスタイルを希望しますので、方法1を試してみました。

カテゴリ部分の表示がうまくラジオボタンになり、成功したと思ったのですが、実質複数のチェックが可能のようです。

radioの場合、同じnameを付けてないと、「1つしか選べない」という状態を作れませんが、それがうまくいっていないのでしょうか?

修正ポイントあれば、再度ご教授お願いします。

2010/09/17 22:05:33
id:akumasyougun666 No.2

回答回数94ベストアンサー獲得回数0

大変申し訳ございませんが、あなたはこの質問に回答することはできません。

http://q.hatena.ne.jp

  • id:rouge_2008
    > tenmillionさん

    とりあえず実装できましたのでご連絡します。
    手順はダイアリーの記事を確認してください。
    http://d.hatena.ne.jp/rouge_2008/20100919/1284910800

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません