MTAppOtherTypeCategories
記事編集画面のカテゴリ選択 UI をラジオボタンまたはドロップダウンに置き換える静的メソッド。単一選択 UI に変換し、selected/disabled/hidden/nest/add などのオプションを持つ。記事カテゴリが 1 つ以上必要。記事編集画面(edit-entry)専用。
記事編集画面のカテゴリ選択 UI を、ラジオボタンまたはドロップダウン(select)に置き換える静的メソッドです。記事編集画面(edit-entry)の記事タイプでのみ動作します。標準のカテゴリセレクタ(チェックボックス+オートコンプリート)の代わりに、1 つだけ選べるシンプルな UI にしたいときに使います。
構文
$.MTAppOtherTypeCategories(options);静的メソッド($.MTAppOtherTypeCategories)です。
パラメータ
options {Object} — 省略可。以下のプロパティを持ちます。
| プロパティ | 型 | 既定値 | 説明 |
|---|---|---|---|
type | string | 'radio' | UI の種類。'radio'(ラジオボタン)/ 'select'(ドロップダウン) |
label | string | 'カテゴリ' | 追加するウィジェットのラベル |
notSelectedText | string | '未選択' | 未選択を表す選択肢のテキスト(selected 未指定時に先頭へ追加) |
selected | number | string | null | 初期選択させるカテゴリ ID。null なら「未選択」を選択肢として追加し既定で選ぶ |
disabledExceptSelected | boolean | false | true で選択中のカテゴリ以外を disabled にする |
hiddenExceptSelected | boolean | false | true で選択中のカテゴリ以外を非表示(hidden クラス)にする |
add | boolean | false | true で「追加」リンクを表示し、カテゴリを新規作成できるようにする |
nest | boolean | false | true で子カテゴリを字下げ表示する(radio のみ) |
debug | boolean | false | true で元のカテゴリウィジェットも表示したままにする |
l10n | Object | — | 表示文言(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-listのchangeを監視するため)。
関連
MTAppCategorySwitch— 選択中のカテゴリに応じてフィールドの表示を切り替える。MTAppGetCategoryName— カテゴリ ID からラベルやベースネームを取得する。