Movable Type Data APIの使い方:listEntries()

Movable Type Data APIの使い方:listEntries()

Posted at August 20,2013 12:03 AM
Tag:[DataAPI, MovableType]

Movable Type 6から提供されるData APIの使い方を紹介します。

本エントリーではJavaScript SDK APIのlistEntries()の基本的な使い方について解説します。

1.基本

listEntries()はパラメータに設定した条件にしたがって記事一覧を収集するためのAPIです。

listEntries()を使って記事一覧を表示する簡単なサンプルを紹介します。

<script>
// API生成コード等は省略
 
var siteId = 2;
api.listEntries(siteId, function(response) {
  if (response.error) {
    return;
  }
  for (i=0; i< response.items.length; i++) {
    jQuery('#result').append($('<li>').append(response.items[i].title));
  }
});
</script>
<div id="result"></div>

JavaScriptライブラリのインクルードやapiの生成については「Movable Type Data APIの使い方(JavaScript SDKを使ったオブジェクトの生成)」を参照してください。

また、エラーのハンドリングについては「Movable Type Data APIの使い方(エラーのハンドリング)」を参照してください。

なお、上記のサンプルでは結果表示処理でjQueryを利用しているので、jQueryのインクルードも行ってください。

2.パラメータ

listEntriesに設定するパラメータは次のとおりです。

  • siteId:ブログIDを設定(必須)
  • コールバック:レスポンス受信時の処理を記述

このエントリーでは省略していますが、第2パラメータとしてオプションを設定することも可能です。詳細は別のエントリーで紹介します。

3.レスポンス

レスポンスとして次のようなJSONデータが返却されます(MT6ベータ版時点でのサンプル)。

{
    "totalResults": 3,
    "items": [{
        "excerpt": "テスト投稿です。...",
        "date": "2013-07-10T23:08:07+09:00",
        "status": "Publish",
        "updatable": false,
        "author": {
            "userpicUrl": null,
            "displayName": "hoge"
        },
        "comments": [],
        "allowComments": true,
        "permalink": "http://user-domain/test.html",
        "keywords": "",
        "body": "テスト投稿です。",
        "trackbacks": [],
        "id": 1,
        "allowTrackbacks": true,
        "modifiedDate": "2013-08-07T22:05:26+09:00",
        "trackbackCount": "0",
        "blog": {
            "id": "2"
        },
        "categories": [],
        "tags": [],
        "commentCount": "0",
        "assets": [],
        "basename": "test",
        "createdDate": "2013-07-10T23:08:20+09:00",
        "class": "entry",
        "title": "テスト",
        "pingsSentUrl": [],
        "more": "",
        "customFields": [{
            "basename": "cftext",
            "value": "aaa"
        }]
    }, {
        …2件目(略)…
    }, {
        …3件目(略)…
    }]
}

データの意味は次のとおりです。

totalResults
記事数を保持します(ベータ1では公開状態の全記事件数)。

items
記事データオブジェクトを配列で保持します。

itemsの中から主に次のデータが収集可能です。

  • blog:ブログID
  • class:記事クラス
  • id:記事ID
  • title:記事タイトル
  • body:記事本文
  • more:記事追記
  • excerpt:記事概要
  • date:公開日時
  • createdDate:作成日時
  • modifiedDate:更新日時
  • status:公開状態
  • author:記事作成ユーザー
  • comments:コメント
  • permalink:記事のパーマリンク
  • keywords:キーワード
  • categories:カテゴリ
  • tags:タグ
  • basename:ベースネーム
  • customFields:カスタムフィールド

4.レスポンスデータから記事データを取得する

レスポンスデータから記事データを順次取得するには次のようにします。

api.listEntries(siteId, function(response) {
  for (i=0; i&lt; response.items.length; i++) {
    alert(response.items[i].title);
  }
});

for文で配列itemsの要素数分繰り返し処理を行い、for文の中でコールバックの引数responseからデータを抜き出します。

ハッシュ・配列はピリオド、さらに配列は[]で要素を指定します。

たとえば1番目の記事データから記事タイトルを取得する場合は、

response.items[1].title

となります。

2番目の記事データからブログIDを取得するには、

response.items[2].blog.id

とします。

3番目の記事データからカスタムフィールド0番目の値を取得するには、

response.items[3].customFields[0].value

とします。

カスタムフィールドについては、配列customFieldsの何番目に何のカスタムフィールドが設定されているか、ベースネームから判定する必要があります。

response.items[3].customFields[0].basename
関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)