$.MTAppFieldSort() の使い方 - MTAppjQuery でフィールドを簡単に並び替える
MTAppjQuery プラグインに同梱されている jQuery プラグインのうち、今日は「$.MTAppFieldSort()」について説明します。
$.MTAppFieldSort() とは
$.MTAppFieldSort() とは、ブログ記事の作成・編集画面内のメインカラムの各フィールドを簡単に並べ替えることができる jQuery プラグインです。
フィールドの並べ替えについては、Movable Type 5 から標準の機能でもできるようになりましたが、タイトル、本文には対応していません。このプラグインを使えば、タイトル、本文も含めて並べ替えることができます。カスタムフィールドにも対応しています。
使い方
基本的な書き方は次のようになります。
if($('body#edit-entry').length){
$.MTAppFieldSort({
sort: 'title,text,tags,excerpt,keywords'
// title,text,tags,excerpt,keywords またはカスタムフィールドのbasenameを並び順にカンマ区切りで書く
});
}
なお、この if($('body#edit-entry').length){} は、ブログ記事の作成・編集画面のみに適用させるための記述になります。この if 文を入れないと、他のページで不具合が発生しますのでご注意ください。
もし、他のページにも適用させる場合は、$.MTAppDebug() の機能を使って、条件分岐文を書き出すと便利です(後日説明文を公開します)。
オプションの設定は以下のとおりです。
sort : string(必須)
並べ替えたい順番に、各フィールドのベースネームをカンマ区切りで設定します。ここで指定したフィールドが、メインカラムの頭から順番に並び、指定しなかったフィールドがその後ろに続きます。
デフォルトのフィールドのベースネームは、以下のようになります。「本文」「続き」のベースネームが $.MTAppCustomize() の使い方とは違うので注意してください。
- title : タイトル
- text : 本文・続き
- tags : タグ
- keywords : キーワード
- excerpt : 概要
カスタムフィールドの場合は、ベースネームの頭に「 c: 」を付けてください。
カスタムフィールドのベースネームは、カスタムフィールドの編集画面で確認できます。
もし Firebug などで直接ソースで確認する場合は、そのフィールドの一番親の div 要素の id 属性から確認できます。以下の例で言えば「price」がベースネームになります。
<div id="customfield_price-field" class="field field-top-label ">
省略
</div>
なお、ここで説明しているベースネームは、ブログ記事の作成・編集画面のものですが、他の管理画面のページでも、ベースネームを指定すれば基本的には同様に並べ替えることができます。
ただし、他の管理画面のページでフィールドを並べ替える場合は、次に説明する insertID オプションの設定をする必要があります。
insertID : string(任意)
$.MTAppFieldSort() は、基本的にはブログ記事の作成・編集画面に利用することを前提としています。しかし、それ以外の管理画面のページでも、$.MTAppFieldSort() を利用してフィールドを並べ替えることができます。
その場合は、この insertID オプションで、並べ替えたいフィールドを包含するボックスの id 属性を指定します。例えば、テンプレートの編集画面のフィールドを並べ替えたいときは、以下のように記述します。
// テンプレートの編集
if($('body#edit-template-index').length){
$.MTAppFieldSort({
sort: 'revision-note,outfile,title',
insertID: 'template-listing-form'
});
}
サンプル
例えば、メインカラムを以下の順番に並べたいとします。
- キーワード( keywords )
- テキストフィールドというカスタムフィールド( c:textfield )
- タイトル( title )
この場合は次のように書きます。
$.MTAppFieldSort({
sort: 'keywords,c:textfield,title'
});
![]()
- 【2010-08-13 追記】
- ブログ記事の作成・編集画面以外の管理画面のページに適用する場合の記述と、insertID オプションについての説明を追加しました。
以上です。
トラックバック
The trackback URL is "".



たいへん便利なプラグインを無償公開していただいてありがとうございます。
わからないことがありましたので、質問をさせてください。
並べ替えを、カテゴリの編集画面で行うにはどうしたらよいでしょうか?
(カテゴリ作成後、カテゴリ名をクリックして表示される画面です。)
MTOS5.12を使っています。
藤本壱さんのAnotherCustomFieldsプラグインで、カテゴリに項目を増やしました。
if (mtappVars.screen_id == 'edit-category')
で項目名の変更はできましたが、並べ替えの記述方法がわかりません。
プロの現場の仕事術も購入して、使い方を見てみたのですが、それでもやり方がわからなかったので、厚かましいと思いつつも、コメントしたしだいです。
お忙しいとは思いますが、時間のあるときにでも、やり方を教えていただければ、と思います。
よろしくお願いいたします。
追伸、
if($('body#edit-category').length){
$.MTAppFieldSort({
sort: 'label,subtitle,description',
insertID: 'category-meta'
});
}
のように試してますがダメでした。
insertIDは、
insertID: 'category-meta'
insertID: 'fieldset#category-meta'
insertID: 'main-content'
も試してみたのですが、ダメです。
おかしい箇所を指摘していただければ助かります。
よろしくお願いいたします。
スプラッシュさん、返信が遅くなってすみませんでした。
以下のようにやってみてください。if文の条件式は、こちらの書き方を推奨します。
また、insertIDの指定を、insert_idに変更してください。
ここはバグがありました。お時間をとらせてしまって大変申し訳ありませんでした。
if(mtappVars.screen_id == 'edit-category') {
$.MTAppFieldSort({
sort: 'label,subtitle,description',
insert_id: 'category-meta'
});
}
ありがとうございました!
無事、うまく動作しました♪♪♪
なんどもやりかたを変えて試していたのですっきりしました。
本当にすばらしいプラグインをありがとうございます。
ついでの質問で申し訳ないですが、
$.MTAppSlideMenu();
(function($){
の直下においているのですが、うまく動作してくれません。
ブラウザは、firefox と chrom で確認しました。
なにかタグでくくったりする必要があるのでしょうか?
また、所属するブログだけ絞ってすべて一覧で表示されるようなオプションは上記に含まれてますでしょうか?
また、お時間のあるときで構いませんので、ご教授いただければと思います。
よろしくお願いいたします。
スプラッシュさん、うまくいったようで良かったです。
そして、すみません、$.MTAppSlideMenu();はMT5.1には対応していません。
今のところ、対応予定は未定です(>_<)
そうだったんですね。
やり方が悪いのかと思ってしまいました。
カタツムリさんがお気に入りの機能ということで、私も一度、試して見たいと思っていただけです。
いまのままでも十二分に素晴らしいプラグインですので、無償での公開を本当に感謝いたします。
ありがとうございます。
またわからないことが起こりましたら質問させていただくかもしれません。
今後も、よろしくお願いします。