HIDEPPO

カテゴリー選択を1つに限定したい

0

MT5でサイトを構築していますが、サイト構造の都合上、記事投稿時のカテゴリー選択は1つに限定したいです。ただ、ご存じの通りMTのカテゴリー選択はチェックボックス形式なので、カテゴリーの複数選択が容易に出来てしまいます。

記事投稿者への告知を徹底するなど、運用でカバーを試みましたが、複数選択出来るとアレもコレもと選択したくなるのが人情なのか、カテゴリーを複数選択してしまう例が後を絶ちません。

カテゴリー選択数を限定したり・特定カテゴリーを選択不可にしたりといったことを可能にする方法、あるいは可能にするプラグインをご存じの方はいらっしゃいませんでしょうか?

みなさんのお知恵をお借り出来ると助かります。

返信(9)

| 返信する
  • >HIDEPPOさん
    ご要望する機能は以下の通りで良いでしょうか。

    • チェック可能なカテゴリは1つ
    • チェックできないカテゴリはinput要素に「disabled="disabled"」を与えて、チェックできない状態にする
    • チェック可能なカテゴリからサブカテゴリを作成できないようにする
  • >yujiroさん

    ご返信ありがとうございます。
    はい、このような機能をなんとか実現出来ないかなと思っています。

    category_selector.tmplをカスタマイズしてなんとかしようと試みたのですが、
    私の力量では思ったような機能を実現することが出来ませんでした。

    贅沢を言えば、チェック可能なカテゴリのMAX値は、なんらかの形で指定出来ると
    汎用性は増すかなと思いますが、私個人が現在抱えている問題は、
    チェック可能なカテゴリは1つに限定することで解決されます。

    何か良いアドバイスがあれば、
    お力をお借り出来ると助かります。

  • >HIDEPPOさん
    プラグインを以下に置きましたので動作をご確認ください。

    https://github.com/koikikukan/mt-plugin-category-selector-filter

    ブログ別のプラグイン一覧の「CategorySelectorFilter」に、設定項目を作っています。テキストフィールドに選択させたいカテゴリのカテゴリIDを設定してください。

    #イケてない実装ですがお許しください。

  • >yujiroさん

    プラグインを作成いただけるとは!
    ご親切にありがとうございます!!!

    さっそく試してみました。
    見事、選択できるカテゴリーを限定することが出来ました。
    凄いです!

    ただ、「チェック可能なカテゴリは1つ」という点について、
    私の説明が至らなかったこともあって、意図が伝わっていなかったようです。

    正確に表現をすると、
    「選択出来るカテゴリは複数あるけれど、設定出来るのは1つだけ」
    となります。

    A・B・Cという3つの選択可能なカテゴリがあるとして、
    Aを設定すると、残りB・Cは設定出来なくなるという動作です。

    カテゴリ選択のインターフェイスが、ラジオ or プルダウンになっていれば、
    yujiroさんに作っていただいたプラグインと組み合わせて狙った動作が
    実現出来そうな気がするのですが、そこは管理画面のテンプレートを
    カスタマイズしたほうが早いでしょうか。

    私の方でも少しチャレンジしてみます!

  • HIDEPPOさん

    yujiroさんの
    > チェック可能なカテゴリは1つ
    > チェックできないカテゴリはinput要素に「disabled="disabled"」を与えて、チェックできない状態にする
    > チェック可能なカテゴリからサブカテゴリを作成できないようにする
    をヒントに、JavaScriptで制御できるかなと思いました。

    <script type="text/javascript">
    $(function(){
      $('input.add-category-checkbox').live('change',function(){
        if($('input.add-category-checkbox:checked').size()){
          $('input.add-category-checkbox').each(function(){
            if(!$(this).attr('checked')){
              $(this).attr('disabled','disabled');
            }
          });
        } else {
          $('input.add-category-checkbox').attr('disabled','');
        }
      });
    });
    </script>

    もっとスマートなやり方があるかもしれませんが、
    とりあえず、これを category_selector.tmpl に書けば実現できると思います。

    やってる事は、カテゴリーのチェックボックスを監視して、
    1つでもチェックが付いていれば、チェックが付いたチェックボックス以外を選択できない状態にし、
    チェックされた数が0個の場合は、全て選択可の状態にしてます。

  • >たいようさん
    ありがとうございます。
    Github上のプラグインに盛り込みました。
    提示されたコードはちょこっと直させて頂いてます。

    >HIDEPPOさん
    これでご希望の動作になると思います。

  • >yujiroさん
    >たいようさん

    皆様、ありがとうございます!
    見事希望通りの動作になりました。大変感謝です。

    ただ、Win+IEの組み合わせでは、javascriptが動作しないようで、
    複数チェックが出来てしまうようですね。
    (すべての環境で動作チェックをした訳ではないのですが)

    カテゴリに関しては、今回のような細かい設定が出来たり、
    ユーザーごとの権限が設定出来たりといったことが、
    標準状態で可能になるといいですね。

  • > HIDEPPOさん

    jQuery の live が IE系で上手く動いていないようですね。
    setInterval に変更しました。
    こちらでいかがでしょう。

    $(function(){
      setInterval(function(){
        if($('input.add-category-checkbox:checked').size()){
          $('input.add-category-checkbox').each(function(){
            if(!$(this).attr('checked')){
              $(this).attr('disabled','disabled');
            }
          });
        } else {
         $('input.add-category-checkbox').attr('disabled','');
        }
      },100);
    });

    今回は、Windowsのみですが、
    IE6、IE7、IE8、FF、Safari、Chrome、Operaでテストしました。(笑

  • >たいようさん
    >yujiroさん

    おぉ、IEでもばっちり動いています!
    ありがとうございます。

    思わぬ形で皆さんのお力をお借りできて、
    感謝の気持ちでいっぱいです。

    私もスキルを上げて、コミュニティの貢献出来るようにならねば、
    と思いました。

返信する


カテゴリグループ

OpenID対応しています OpenIDについて