PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > 技術情報 > Data APIのリスト取得内容をプラグインでカスタマイズする

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への対応を進めています。


カテゴリー
プラグイン
技術情報

Recent Entries