SearchEntriesプラグイン(Data API対応その3・JavaScriptでの利用)

Data APIではJavaScriptのライブラリが用意されていて、JavaScriptから利用しやすくなっています。
SearchEntriesプラグインでも、JavaScriptで検索することができます。

1.ライブラリの読み込み

Data API本体のJavaScriptライブラリを読み込んだ後に、以下のscript要素で追加のライブラリを読み込みます。

<script type="text/javascript" src="http://your-host/path-to-mt/mt-static/plugins/SearchEntries/extension.js"></script>

2.メソッドの追加

Data APIのオブジェクトを初期化した後、「FJDataAPIEntryCategories.extendEndPoints(Data APIのオブジェクト)」のような文を実行して、メソッドを追加します。
例えば、Data APIのオブジェクトを変数apiに代入するなら、初期化の処理を以下のようにします。

api = new MT.DataAPI({
  baseUrl:  'http://your-host/path-to-mt/mt-data-api.cgi',
  clientId: 'example',
});
FJDataAPISearchEntries.extendEndPoints(api);

3.searchEntriesメソッドで検索

次に、「searchEntries」というメソッドで、検索を行います。
基本的なJavaScriptの書き方は、以下のようになります。

var param = {
  templateName : 検索条件用のテンプレートモジュールの名前,
  templateBlogId : 検索条件用テンプレートモジュールがあるブログ(ウェブサイト)のID
};
api.searchEntries(param, function(response) {
  if (response.error) {
    エラー時の処理
  }
  検索結果に対する処理
});

検索条件用のテンプレートモジュールは、昨日解説した手順で、あらかじめ作成しておきます。
そして、そのテンプレートモジュールの名前とブログ(ウェブサイト)のIDを、Data APIにパラメータとして渡します。

検索に成功すると、searchEntriesメソッドの2つ目のパラメータのコールバック関数が実行され、結果がresponseに渡されます。
responseの内容は、Movable Type標準のlistEntriesメソッドの場合と同じです。

4.事例

以下のような場合があるとします。

Movable Typeのインストール先http://www.foo.com/mt/
ブログのID1
検索条件用テンプレートの名前DataAPI検索
検索結果に対する処理検索された記事のタイトルをul/liのリストにして、IDが「index-main」の要素に流し込む

この場合のJavaScriptのコードは以下のようになります。

api = new MT.DataAPI({
  baseUrl:  'http://www.foo.com/mt/mt-data-api.cgi',
  clientId: 'example',
});
FJDataAPISearchEntries.extendEndPoints(api);
var param = {
  templateName : 'DataAPI検索',
  templateBlogId : 1,
};
api.searchEntries(param, function(response) {
  if (response.error) {
    alert('検索時にエラーが発生しました。');
    return;
  }
  var html = '
    '; for (var i = 0, j = response.items.length; i < j; i++) { html += '
  • ' + response.items[i].title + '
  • '; } html += '
'; jQuery('#index-main').html(html); });