カスタムフィールドの値を一覧画面に表示するプラグイン(その4)

昨日に続いて、プラグインで独自のデータ型のカスタムフィールドを追加した場合に、そのデータを最適な形で一覧画面に表示するために、プラグインを拡張する方法を解説します。
今日は、コールバックを使う方法を紹介します。
なお、今日でカスタムフィールドの値を一覧画面に表示するプラグインの解説は終わりです。

1.customfields.list_propertiesコールバック

このプラグインをインストールすると、「customfields.list_properties」というコールバックが追加されます。
このコールバックは、レジストリにlist_propertiesの情報を設定する直前に呼び出されます。

コールバックのサブルーチンには、以下の4つの情報が渡されます。

情報内容
$cbコールバックのオブジェクト
$appアプリケーション(MT::App)のオブジェクト
$fieldslist_propertiesに設定する情報を持ったハッシュリファレンス
$field_map$fieldsに属するカスタムフィールドのキーを、カスタムフィールドのデータ型ごとに配列にまとめたハッシュリファレンス

例えば、IDが1番のブログで、ブログ記事に以下のようにカスタムフィールドを追加しているとします。

種類(データ型)ベースネーム
テキスト(text)entry_pref
テキスト(text)entry_address
日付(datetime)entry_birthday

この場合、$fieldsと$fields_mapは、それぞれ以下のような構造のデータになっています。

$fields = {
    blog1_entry_pref => {
        entry_prefフィールドについてlist_propertiesに登録する内容
    },
    blog1_entry_address => {
        entry_addressフィールドについてlist_propertiesに登録する内容
    },
    blog1_entry_birthday => {
        entry_birthdayフィールドについてlist_propertiesに登録する内容
    },
}
$field_map = {
    text => [
        'blog1_entry_pref', 'blog1_entry_address',
    ],
    checkbox => [
        'blog1_entry_birthday',
    ],
}

各フィールドについて、list_propertiesに登録する内容をプラグインで上書きすることで、フィールドの値の表示方法等を変えることができます。

2.事例

このコールバックを使って、拙作のGoogleMapsCustomFieldプラグインを改良しました。
Googleマップのカスタムフィールドを追加した場合に、地図のサムネイルをオブジェクト一覧のページに表示できるようになります。
プラグインは明日公開します。