Movable Type 5.1のリスティングフレームワークで独自管理画面を作る(その1)

Movable Type 5.1のリスティングフレームワークで独自管理画面を作る(その1)

Posted at April 27,2011 2:55 AM
Tag:[5.1, LisingFramework, MovableType]

Movable Type 5.1のリスティングフレームワークで独自管理画面を作ってみました。何回かに分けて紹介します。

経緯は、現在執筆中のMT5.1書籍で紹介するプラグインをMT5.0xで開発しており、その中にメールアドレス一覧画面があるのですが、MT5.1で正常に表示されなくなってしまいました。

ちなみにこれがMT5.0xでのメールアドレス一覧画面です。

Movable Type 5.0のメールアドレス一覧画面
Movable Type 5.0のメールアドレス一覧画面

MT5.1ベータでそのまま表示すると、「表示オプション」がものすごいことに・・・。

Movable Type 5.1のメールアドレス一覧画面(そのまま移行)
Movable Type 5.0のメールアドレス一覧画面

で、「表示オプション」を非表示にしたら表示が崩れてました。

Movable Type 5.1のメールアドレス一覧画面(表示オプションはずした状態)
Movable Type 5.0のメールアドレス一覧画面(表示オプションはずした状態)

この画面を修正するよりもリスティングフレームワークを使った方が早いのではないかと思い、リスティングフレームワークは既存の一覧画面にプロパティを追加する程度しか知らない状態ですが、思い切って変更することにしました。

1.独自テーブルの作成

独自画面を作るにはデータベースに独自テーブルを用意する必要があります。ここでは「name」「email」「description」といったフィールドをもつmt_addressというテーブルを予め作成している前提で説明を進めます。

独自テーブルの作成方法は「Movable Type 5 プロフェッショナルガイド」の「21-5 フィールドの拡張とオブジェクトテーブルの追加」などを参考にしてください(宣伝)。

2.画面の追加

Movable Type 5.0までは一覧表示用の管理画面を、プラグイン側で「hoge.tmpl」などで用意する必要がありましたが、リスティングフレームワークでは次のレジストリ定義のみで表示されるようになります(ということが分かりました)。

listing_screens:
    address:
        primary: name
        screen_label: address
        object_label: address
        object_label_plural: all_address
        default_sort_key: name
        view: system
        scope_mode: none

2行目の「address」は、テーブル定義のdatasource(例えばmt_entryなら'entry')を設定するようです。これで一覧画面で利用するオブジェクトを指定します。

3行目の「primary」はリストの最初に表示するフィールドを指定します。この設定を行わないと、後の手順で説明する、一番左に表示するチェックボックスが横に広がってしまうようなので必ず設定しましょう。なお、このエントリーの最後に掲載するリンク先の説明では、primaryは、

プライマリ表示が指定されたカラムは、表示幅の最大値が設定されず、他のカラムが非表示になった場合にテーブルを埋める役割を果たします。

となっています。ちなみにprimaryを設定しても、後でお見せする画像でお分かりのとおり、そのフィールドが一覧に表示されるわけではありません。表示させるには「list_properties:」の設定が別途必要です。

4行目から6行目は画面に表示する部分になります。「screen_label」はtitle要素とh1要素になります。「object_label_plural」はフィルタ部分の「すべての××」の「××」の部分になります。

7行目の「default_sort_key」は、一覧を表示したときにソートするフィールドを指定します。

8行目の「view」は一覧画面を表示するスコープを指定します。ここでは「system」を指定しているのでシステム管理画面のみ表示させるようにしています。

9行目の「scope_mode」はblog_idの条件を設定するためのもののようで、コア機能のソースコードでは「none」または「this」が設定されていました。カテゴリやフォルダなどでは「this」、その他はおおむね「none」が設定されていたので、一覧に表示するオブジェクトをブログIDで絞り込むための設定ではないかと推測しています(説明が不足しているとか間違っていたらご指摘ください)。

ここまでの設定で次の画面が表示されました。

Movable Type 5.1のメールアドレス一覧画面(listing_screensまで指定)
Movable Type 5.1のメールアドレス一覧画面

listing_screensに設定可能な項目は他にも色々あります。詳細は以下のリンクを参照してください。

Registry: listing_screens

次回に続きます。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

listing screensの以下の部分なのですが

2行目の「address」は、テーブル定義のdatasource(例えばmt_entryなら'entry')を設定するようです。これで一覧画面で利用するオブジェクトを指定します。

object_types:
thumbnail_prototype: ImageCropper::Prototype

のようにして指定を行い、Prototypeの中で、下のように別の名前を指定した場合は、datasourceではなくobject_typeで指定する必要があるっぽいです。
datasource => 'cropper_prototypes',

上記例だと、以下のようにしないと画面が表示できませんでした。

listing_screens:
thumbnail_prototype:
object_label: Crop Prototype
object_label_plural: Crop Prototypes
primary: label

まぁ、特殊な例ですが、一応

[1] Posted by oscar logo : September 14, 2011 7:13 PM

>oscarさん
こんばんはー。
情報ありがとうございます!

[2] Posted by yujiro logo : September 17, 2011 4:06 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)