コールバックの設定
更新日:2024.02.02
今回は、コールバックを使う方法を紹介します。
customfields.list_propertiesコールバック
このプラグインをインストールすると、「customfields.list_properties」というコールバックが追加されます。
このコールバックは、レジストリにlist_propertiesの情報を設定する直前に呼び出されます。
コールバックのサブルーチンには、以下の4つの情報が渡されます。
情報 | 内容 |
$cb | コールバックのオブジェクト |
$app | アプリケーション(MT::App)のオブジェクト |
$fields | list_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に登録する内容をプラグインで上書きすることで、フィールドの値の表示方法等を変えることができます。
事例
このコールバックを使って、GoogleMapsCustomFieldプラグインを改良しました。
Googleマップのカスタムフィールドを追加した場合に、地図のサムネイルをオブジェクト一覧のページに表示できるようになります。