Movable Type Data APIの使い方:カスタムフィールド作成

Movable Type Data APIの使い方:カスタムフィールド作成

Posted at February 19,2015 12:22 AM
Tag:[CustomField, DataAPI, MovableType]

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

本エントリーでは、JavaScript SDK APIのcreateField()を使ったカスタムフィールドの作成方法について解説します。

このAPIはMT6.1から有効です。

1.基本

createField()は、カスタムフィールドの作成を行うためのAPIです。

createField()を使ったカスタムフィールドの作成を行うための簡単なサンプルを紹介します。

<script>
// API生成コード等は省略
 
var siteId = 2;
$('#create').click(function(){
    var data = {
        'systemObject': $('#systemObject').val(),
        'name' : $('#name').val(),
        'description' : $('#description').val(),
        'required' : $('#required').prop('checked'),
        'default' : $('#default').val(),
        'type' : $('#type').val(),
        'basename' : $('#basename').val(),
        'tag' : $('#tag').val()
    };
    api.createField(siteId, data, function(response) {
        if (response.error) {
            $('#result').html('エラー:' + response.error.message);
        } else {
            $('#result').html('作成しました');
        }
    });
});
</script>
 
<ul>
<li><input type="text" id="systemObject" />システムオブジェクト</li>
<li><input type="text" id="name" />名前</li>
<li><input type="text" id="description" />説明</li>
<li><input type="text" id="type" />種別</li>
<li><input type="checkbox" id="required" />必須?</li>
<li><input type="text" id="default" />既定値</li>
<li><input type="text" id="basename" />ベースネーム</li>
<li><input type="text" id="tag" />タグ</li>
<li><input type="button" id="create" value="作成" />
</ul>
<div id="result"></div>

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

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

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

2.パラメータ

createField()に設定するパラメータは次のとおりです。第2パラメータのdataはハッシュで設定します。

  • siteId:ブログID(必須)
  • data:作成するカスタムフィールドの情報(必須)
  • callback:コールバック処理(オプション)

第2パラメータのdataの詳細は次のとおりです。

  • systemObject:システムオブジェクト(必須)
  • name:カスタムフィールドの名前(必須)
  • description:カスタムフィールドの説明
  • required:必須の場合、1を設定
  • default:既定値
  • options:オプション
  • type:種別(必須)
  • basename:ベースネーム
  • tag:テンプレートタグ
  • showInTheseCategories:カスタムフィールドにひもづけるカテゴリID

システムオブジェクトに設定する値は次のとおりです。

  • ブログ記事:entry
  • ウェブページ:page
  • コメント:comment
  • アイテム:file
  • オーディオ:audio
  • ビデオ:video
  • 画像:image
  • カテゴリ:category
  • フォルダ:folder
  • テンプレート:template
  • ブログ:blog
  • ウェブサイト:website

種別に設定する値は次のとおりです。

  • テキスト:text
  • テキスト(複数行):textarea
  • チェックボックス:checkbox
  • URL:url
  • 日付と時刻:datetime
  • ドロップダウン:select
  • ラジオボタン:radio
  • 埋め込みオブジェクト:embed
  • アイテム:file
  • オーディオ:audio
  • ビデオ:video
  • 画像:image

種別から「日付と時刻」を選択した場合、optionsに下記の設定が必要と思われます。

  • 日付と時刻:datetime
  • 日付:date
  • 時刻:time

ベースネームとテンプレートタグは省略可能です。

ベースネームを省略した場合、名前から生成するようです(日本語の場合もそのまま)。

テンプレートタグを省略した場合、システムオブジェクト名に名前の半角英数から取得したものを結合するようです。

showInTheseCategoriesの設定イメージは次のとおりです。

var data = {
    'systemObject': $('#systemObject').val(),
    …中略…
    'showInTheseCategories' : [ {"id":"1"}, {"id":"2"} ]
};

全体を配列にし、紐づけたいカテゴリのカテゴリIDをハッシュで指定します。

管理画面では作成後でしかカテゴリのひもづけを設定できませんが、Data APIを利用すれば一度に設定することができます。

3.レスポンス

作成に成功した場合のレスポンスとして、次のようなJSONデータが返却されます。

{"options":null,"updatable":true,"name":"foo","default":"テスト","blog":{"id":"2"},"description":"test","systemObject":"entry","basename":"foo","showInTheseCategories":[{"label":"cat1","id":"1"},{"label":"cat2","id":"2"}],"required":true,"id":"1","type":"text","tag":"entryfoo"}
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


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

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

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

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