MTAppOtherTypeCategories

記事編集画面のカテゴリ選択 UI をラジオボタンまたはドロップダウンに置き換える静的メソッド。単一選択 UI に変換し、selected/disabled/hidden/nest/add などのオプションを持つ。記事カテゴリが 1 つ以上必要。記事編集画面(edit-entry)専用。

記事編集画面のカテゴリ選択 UI を、ラジオボタンまたはドロップダウン(select)に置き換える静的メソッドです。記事編集画面(edit-entry)の記事タイプでのみ動作します。標準のカテゴリセレクタ(チェックボックス+オートコンプリート)の代わりに、1 つだけ選べるシンプルな UI にしたいときに使います。

構文

$.MTAppOtherTypeCategories(options);

静的メソッド($.MTAppOtherTypeCategories)です。

パラメータ

options {Object} — 省略可。以下のプロパティを持ちます。

プロパティ既定値説明
typestring'radio'UI の種類。'radio'(ラジオボタン)/ 'select'(ドロップダウン)
labelstring'カテゴリ'追加するウィジェットのラベル
notSelectedTextstring'未選択'未選択を表す選択肢のテキスト(selected 未指定時に先頭へ追加)
selectednumber | stringnull初期選択させるカテゴリ ID。null なら「未選択」を選択肢として追加し既定で選ぶ
disabledExceptSelectedbooleanfalsetrue で選択中のカテゴリ以外を disabled にする
hiddenExceptSelectedbooleanfalsetrue で選択中のカテゴリ以外を非表示(hidden クラス)にする
addbooleanfalsetrue で「追加」リンクを表示し、カテゴリを新規作成できるようにする
nestbooleanfalsetrue で子カテゴリを字下げ表示する(radio のみ)
debugbooleanfalsetrue で元のカテゴリウィジェットも表示したままにする
l10nObject表示文言(add, addMessage)を上書きする

戻り値

なし(undefined)。

使用例

// ラジオボタンに変換
$.MTAppOtherTypeCategories({ type: 'radio', label: 'カテゴリ' });

// ドロップダウンに変換し、カテゴリの新規追加も可能にする
$.MTAppOtherTypeCategories({ type: 'select', label: 'カテゴリ', add: true });

// 特定カテゴリを初期選択し、それ以外は非表示にする
$.MTAppOtherTypeCategories({ selected: 5, hiddenExceptSelected: true });

user.js での記述例

user.js(「デザイン → user.js を編集」)に書く場合は、mtappVars.screen_id で画面を判定して呼び出します。

(function ($) {
    if (typeof mtappVars !== 'object') return;
    if (mtappVars.screen_id === 'edit-entry') {
        $.MTAppOtherTypeCategories({ type: 'radio', label: 'カテゴリ' });
    }
})(jQuery);

生成される HTML

#category-field の直後に、新しいウィジェット(#other-type-category-list)が挿入されます。type: 'radio' の場合は次のようなラジオボタン群になります。

<div id="other-type-category-list">
    <label for="another-cat-0"><input id="another-cat-0" type="radio" name="other-type-category" value="" checked>未選択</label>
    <label for="another-cat-5"><input id="another-cat-5" type="radio" name="other-type-category" value="5">お知らせ</label>
    <!-- … カテゴリの数だけ続く … -->
</div>

選択が変わると、隠しフィールド #category-ids に選択中のカテゴリ ID(未選択時は空文字)が反映されます。

補足

  • 記事編集画面(edit-entry)の記事タイプ専用です。それ以外では何もしません。
  • 記事カテゴリが 1 つ以上必要です。本メソッドは標準のカテゴリセレクタ(#category-selector-list の各カテゴリ項目)を読み取って UI を組み立てます。カテゴリが描画されるまで待機し、見つからない場合は約 10 秒で待機を打ち切ります(記事カテゴリが無いブログでは何も起きません)。
  • ラジオ/ドロップダウンは単一選択です(標準のカテゴリ選択は複数選択ですが、本メソッドは 1 つだけ選ぶ UI に置き換えます)。
  • カテゴリのラベルはテキストとして安全に挿入されます(HTML として解釈されません)。
  • add: true のときの新規カテゴリ作成は、Movable Type の js_add_category を呼び出します。
  • MTAppCategorySwitch と併用すると、本メソッドのラジオ/ドロップダウンの選択変更も検知してフィールド表示を切り替えられます(MTAppCategorySwitch#other-type-category-listchange を監視するため)。

関連

  • MTAppCategorySwitch — 選択中のカテゴリに応じてフィールドの表示を切り替える。
  • MTAppGetCategoryName — カテゴリ ID からラベルやベースネームを取得する。