Movable Typeは、Blogger XML-RPC APIを(適用できる箇所に対し)完全に実装しています。 Movable TypeがサポートしないメソッドはgetTemplate
とsetTemplate
の2つだけです。これはBloggerとMovable Typeではテンプレートのシステムが異なるためです。
Movable Typeはまた、metaWeblog XML-RPC APIを(適用できる箇所に対し)サポートしています。
さらにMovable Typeは、エントリーに割り当てたカテゴリーを扱うための独自のメソッドを2つ備えています。
これらのXML-RPC APIsを使うときは、ウェブサーバーにLWP::UserAgent
とSOAP::Lite
がインストールされている必要があります。インストールされていない場合は、「インストール手順」を参照してインストールしてください。
Movable TypeがサポートしているXML-RPCのメソッドは以下のとおりです。
パラメータ: String appkey、String blogid、String username、String password、String content、boolean publish
返り値: 成功すると新しい投稿のString postid、失敗するとfault
パラメータ: String appkey、String postid、String username、String password、String content、boolean publish
返り値: 成功すると true、失敗するとfault
パラメータ: String appkey、String postid、String username、String password、String content、boolean publish
返り値: 成功すると true、失敗するとfault
パラメータ: String appkey、String blogid、String username、String password、int numberOfPosts
返り値: 成功するとISO.8601 dateCreated、String userid、String postid、String contentを含む構造体の配列、失敗するとfault
注: dateCreatedは、ウェブログのblogidのタイムゾーンに基づきます。
パラメータ: String appkey、String username、String password
返り値: 成功すると url、String blogid、String blogNameを含む構造体の配列、失敗するとfault
パラメータ: String appkey、String username、String password
返り値: 成功するとString userid、String firstname、String lastname、String nickname、String email、 String urlを含む構造体、失敗するとfault
注: firstnameには、Movable Typeのユーザー名の最初のスペースがあるところまで、また、lastnameにはユーザー名の最初のスペース以降が表示されます。
パラメータ: String blogid、String username、String password、struct content、boolean publish
返り値: 成功すると新しい投稿のString postid、失敗するとfault
注: 構造体contentには次の標準のキーを含められます: エントリーのタイトルにはtitle、エントリーの本文にはdescription、エントリー作成日の指定にはdateCreated。 さらにMovable Typeの実装によって、次の7つのキーを含め、その値を指定して渡すことができます。 allow_commentsフィールドの値にはint mt_allow_comments、allow_pingsフィールドの値にはint mt_allow_pings、convert_breaksフィールドの値にはString mt_convert_breaks、追記のエントリー・テキストの値にはString mt_text_more、概要のフィールドの値にはString mt_excerpt、キーワード・フィールドの値にはString mt_keywords、このエントリーのトラックバックpingを載せたURLのリストにはarray mt_tb_ping_urls。 dateCreatedを指定する場合は、ISO.8601のフォーマットに従ってください。
パラメータ: String postid、String username、String password、struct content、boolean publish
返り値: 成功するとtrue、失敗するとfault
注: 構造体contentには次の標準のキーを含められます: エントリーのタイトルにはtitle、エントリーの本文にはdescription、エントリー作成日の指定にはdateCreated。 さらにMovable Typeの実装によって、次の7つのキーを含め、その値を指定して渡すことができます。 allow_commentsフィールドの値にはint mt_allow_comments、allow_pingsフィールドの値にはint mt_allow_pings、convert_breaksフィールドの値にはString mt_convert_breaks、追記のエントリー・テキストの値にはString mt_text_more、概要のフィールドの値にはString mt_excerpt、キーワード・フィールドの値にはString mt_keywords、このエントリーのトラックバックpingを載せたURLのリストにはarray mt_tb_ping_urls。 dateCreatedを指定する場合は、ISO.8601のフォーマットに従ってください。
パラメータ: String postid、String username、String password
返り値: 成功すると次を含む構造体:String userid、ISO.8601 dateCreated、String postid、String description、 String title、String link、String permaLink、String mt_excerpt、String mt_text_more、int mt_allow_comments、int mt_allow_pings、String mt_convert_breaks、String mt_keywords、失敗するとfault
注: linkとpermaLinkは共にアーカイブされた投稿を指すURLです。 mt_という接頭語で始まるフィールドは、Movable TypeがmetaWeblog.getPost APIを拡張したフィールドです。
パラメータ: String blogid、String username、String password、int numberOfPosts
返り値: 成功すると次を含む構造体の配列:ISO.8601 dateCreated、String userid、String postid、String description、String title、String link、String permaLink、String mt_excerpt、String mt_text_more、int mt_allow_comments、int mt_allow_pings、String mt_convert_breaks、String mt_keywords、失敗するとfault
注: dateCreatedは、ウェブログのblogidのタイムゾーンに基づきます。また、linkとpermaLinkはアーカイブされた投稿を指すURLです。
パラメータ: String blogid、String username、String password、struct file
返り値: アップロードしたファイルへのURL
注: struct(構造体)fileは次の2つのキーを含んでいるはずです: base64 bits (ファイルのbase64でエンコードされたコンテンツ)およびString name (ファイル名)。 typeキー(ファイルのメディア・タイプ)は現在、無視されています。
パラメータ: String blogid、String username、String password、int numberOfPosts
返り値: 成功すると、ISO.8601 dateCreated、String userid、 String postid、String titleを含む構造体の配列、失敗するとfault
注: dateCreatedは、ウェブログのblogidのタイムゾーンに基づきます。
パラメータ: String blogid、String username、String password
返り値: 成功するとString categoryIdとString categoryNameを含む構造体の配列、失敗するとfault
パラメータ: String postid、String username、String password
返り値: 成功するとString categoryName、String categoryId、およびboolean isPrimaryを含む構造体の配列、失敗するとfault
注: isPrimaryはカテゴリーがその投稿されたエントリーの主カテゴリーに属すかどうかを表示します。
パラメータ: String postid、String username、String password、array categories
返り値: 成功するとtrue、失敗するとfault
注: array categoriesは、String categoryIdとboolean isPrimary含む構造体の配列です。 主カテゴリーを指定するためのisPrimaryはオプションです。このフラッグがないと、アレイの最初の構造体が投稿されたエントリーの主カテゴリーに割り当てられます。
パラメータ: なし
返り値: サーバーがサポートするメソッド名の配列
パラメータ: なし
返り値: String keyとString labelを含む構造体の配列。 keyはテキスト・フォーマットのプラグインを特定する固有な文字列で、labelはユーザーに表示される説明です。keyはmt_convert_breaksのパラメータとしてnewPostとeditPostに渡される値です。
パラメータ: String postid
返り値: 次を含む構造体の配列:String pingTitle (pingによって送られたエントリーのタイトル)、String pingURL (エントリーのURL)、およびString pingIP (pingを送ったホストのIPアドレス)
パラメータ: String postid、String username、String password
返り値: 成功するとtrue、失敗するとfault
注: Movable Typeでは、Blogger XML-RPCのメソッドすべてにおいてappkey
の値は無視されます。
Movable TypeのXML-RPCの実装を、w.bloggar、BlogApp、BlogLet、BlogBuddy、Jerichoなどの既存のツールから利用することができます。 たとえば、BlogBuddyを設定してMovable Typeのウェブログに投稿するには、以下の手順に従います。
Movable Typeのコードはオブジェクト指向のスタイルで書かれ、解説のドキュメントが揃ったPerl APIを含んでいるので、それをあなた自身のPerlプログラムに使うことも可能です。 ドキュメントはPOD(プリント・オン・デマンド)フォーマットで書かれ、.pm ファイルの中に含まれています。 このドキュメントはシェルからperldocを、たとえば、以下のように入力すれば、読むことができます。
% cd <movable type directory>/lib % perldoc MT
Movable Typeのプラグイン・フレームワークによって、新しいタグを追加するのが楽になりました。 将来的にはより多くのコールバック機能を追加する予定です。
プラグイン・ファイルは専用のディレクトリに格納されたPerlスクリプトです。Movable Typeが初期化されるとき、プラグインもすべてロードされ、Movable Typeのコードとシステムを実行時に変更することができます。 .plの拡張子を持ったファイルだけが、プラグインと見なされ自動的にロードされます。
pluginsディレクトリは、mt.cgiファイルと同じディレクトリに入れてください。
そのディレクトリを作成するには、FTPサーバーに接続し、Movable Typeをインストールしたディレクトリに移動します。 新しいディレクトリを作成してpluginsと名付けます。
use MT::Template::Context; MT::Template::Context->add_tag(ServerUptime => sub { `uptime` }); 1;
Uptime: <$MTServerUptime$>
これは、プラグインの新しいタグを追加したとても単純な例ですが、 プラグイン・フレームワークは、システム・コマンドを呼び出すタグの追加機能だけに限定されません。
MT::Template::Context->add_container_tag(Loop => sub { my $ctx = shift; my $res = ''; my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); for my $i (1..5) { $ctx->stash('i_value', $i); defined(my $out = $builder->build($ctx, $tokens)) or return $ctx->error($ctx->errstr); $res .= $out; } $res; });
MT::Template::Context->add_tag(LoopIValue => sub { my $ctx = shift; $ctx->stash('i_value'); });
これは以下のようにテンプレートで使うことができます。
<MTLoop> The value of I is: <$MTLoopIValue$> </MTLoop>
すると、以下のように表示されます。
The value of I is: 1 The value of I is: 2 The value of I is: 3 The value of I is: 4 The value of I is: 5
たとえば、以下のコードは次の3つの条件タグを追加します: 常にコンテンツを表示する<MTIfYes>
、コンテンツをまったく表示しない<MTIfNo>
、およびエントリーのコンテキストに使われ、エントリーにタイトルがある場合にだけコンテンツを表示する<MTEntryIfTitle>
use MT::Template::Context; MT::Template::Context->add_conditional_tag(IfYes => sub { 1 }); MT::Template::Context->add_conditional_tag(IfNo => sub { 0 }); MT::Template::Context->add_conditional_tag(EntryIfTitle => sub { my $e = $_[0]->stash('entry') or return; defined($e->title) && $e->title ne ''; });
これらのタグを使った一例です。
<MTIfYes>Yes, this appears.</MTIfYes>
<MTIfNo>No, this doesn't appear.</MTIfNo>
<MTEntries> <MTEntryIfTitle> This entry has a title: <$MTEntryTitle$> </MTEntryIfTitle> </MTEntries>
MT::Template::Context->add_global_filter(rot13 => sub { (my $s = shift) =~ tr/a-zA-Z/n-za-mN-ZA-M/; $s; });
これは以下のように使えます。
<$MTEntryTitle rot13="1"$>
匿名のサブルーチンには3つの引数(フィルターされるタグのスカラー値(数値または文字列)、アトリビュートに供給される引数の値、およびMT::Template::Contextオブジェクト)が渡されます。 2番目の引数の例として、foo
というフィルターを作ったと仮定し、以下のように呼び出すと、
<$MTCommentAuthor foo="5"$>
コールバック・ルーチンの2番目の引数は、5
になります。
プラグインのタグを記述する目的は、RSSフィードの表示、サーバー状態の表示、ヒットカウンターの実装などいろいろあります。 プラグインはhttp://www.movabletype.jp/support.htmlからダウンロードできます。