2015年03月13日
Data APIのリスト取得内容をプラグインでカスタマイズする
今回ご紹介するプラグインは、アイテム(MT::Assetオブジェクト)のリストの一覧表示時に、IDが負(マイナス)のものを除外するというものです。Movable TypeでIDが負(マイナス)のアイテムが生成されることはありませんが、PowerCMSのリビジョン機能がアイテムのバージョン管理に対応しており、過去のリビジョンをプレビューする際にIDが負(マイナス)のアイテムが生成されます。
それらをJSONから除外するプラグインを作成します。
data_api_pre_load_filtered_list.(datasource名)というコールバックに対応するプラグインを作成する
Data APIでリストを返すエンドポイントに対してカスタマイズするには「dataapipreloadfiltered_list.」+「datasource名(というか、model名といった方が適切)」というコールバックに対応したプラグインをつくります。
記事なら、dataapipreloadfilteredlist.entry、ウェブページなら dataapipreloadfilteredlist.page、アイテムなら dataapipreloadfilteredlist.asset という感じです。今回は「dataapipreloadfilteredlist.asset 」コールバックに対応するプラグインを作成します。
name: DataAPIAssetFilter
id: DataAPIAssetFilter
version: 0.1
author_name: Alfasado Inc.
author_link: http://alfasado.net/
description: <__trans phrase="DataAPIAssetFilter">
l10n_class: DataAPIAssetFilter::L10N
callbacks:
data_api_pre_load_filtered_list.asset:
-
priority: 5
handler: >
sub {
my ( $cb, $app, $filter, $count_options, $cols ) = @_;
my $terms = $count_options->{ terms };
$terms->{ id } = { '>' => 0 };
$count_options->{ terms } = $terms;
}
第4引数「$count_options」の->{ terms }をカスタマイズする
アイテムの一覧を取得するエンドポイントについては以下のページを参照ください。
アイテムの一覧を取得するエンドポイントへ以下のリクエストを送信したとき、
GET https://example.jp/mt/mt-data-api.cgi/v2/sites/1/assets
$count_options->{ terms }の内容は以下のようになっています。
{ 'blog_id' => '1', 'parent' => [ \'IS NULL', 0, '' ] }
termsのカスタマイズについては、以下のドキュメントを参照してください。
PowerCMSの次期バージョンでも、PowerCMSのオブジェクトのData APIへの対応を進めています。
コメントを投稿する