MovableTypeは、Blogger XML-RPC APIを完全実装(適応可能部分について)している。Blogger と Movable Type のテンプレートシステムが異なるために、Movable Type は、getTemplate
と setTemplate
の2つのメソッドだけはサポートしない。
また、MovableTypeは、metaWeblog XML-RPC APIもサポート(適応可能部分について)している。
さらに、記事エントリーにカテゴリを適用するために、MovableType 独自のいくつかのメソッドも備えられている。
これらのXML-RPC APIを使用するには、あなたのウェブサーバに LWP::UserAgent
と SOAP::Lite
の両方のモジュールがインストールされている必要がある。インストールされていない場合、the Installation Instructions を参照すれば、インストール方法についての記述がある。
以下は、MovableTypeがサポートしている 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
戻り値: 成功の場合、boolean true value; 失敗の場合, fault
パラメータ: String appkey, String postid, String username, String password, boolean publish
戻り値: 成功の場合、boolean true value; 失敗の場合, fault
パラメータ: String appkey, String blogid, String username, String password, int numberOfPosts
戻り値: 成功の場合、以下のキーを含む構造体の配列、ISO.8601 dateCreated, String userid, String postid, String content; 失敗の場合、fault
注: dateCreatedは、blogidが指すWeblogのタイムゾーンである
パラメータ: String appkey, String username, String password
戻り値: 成功の場合、以下のキーを含む構造体の配列、String 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は、MovableTypeのユーザネームで最初の半角スペースまでの部分が返され、最初の半角スペース以降の部分がlastnameとして返される。
パラメータ: String blogid, String username, String password, struct content, boolean publish
戻り値: 成功の場合、エントリの String postid; 失敗の場合、fault
注: 構造体 content は以下に続くキーを含むことができる:
title, エントリのタイトル
description, エントリの本文
dateCreated, エントリを行った日時
Movable Type の実装では、さらに5つのキーの値を処理することができる:
int mt_allow_comments, allow_comments 欄への入力に該当する値パラメータ: String postid, String username, String password, struct content, boolean publish
戻り値: 成功の場合、boolean true value; 失敗の場合、fault
注: 構造体 content は、以下に続くキーを含むことができる:
title, エントリのタイトル
description, エントリの本文
dateCreated, エントリを行った日時
Movable Type の実装では、さらに5つのキーの値を処理することができる:
int mt_allow_comments, allow_comments 欄への入力に該当する値パラメータ: 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_ という接頭辞のつくキーは、metaWeblog.getPostAPIにおけるMovableTypeの拡張キーである
パラメータ: 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が指すWeblogのタイムゾーンである
linkとpermaLinkは、エントリのアーカイブを指すURLである
パラメータ: String blogid, String username, String password, struct file
戻り値: アップロードされたファイルのURL
注: 構造体 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が指すWeblogのタイムゾーンである
パラメータ: 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
戻り値: 成功の場合、boolean true value
失敗の場合、fault
注: categories配列は、以下のキーを含む構造体の配列である
String categoryId、boolean isPrimary
第一カテゴリをセットする isPrimary はオプションです。省略した場合、配列の先頭の構造体が示すカテゴリが、書き込みの第一カテゴリとしてセットされる
パラメータ: なし
戻り値: サーバがサポートしているXML-RPCメソッド名の配列
パラメータ: なし
戻り値: 以下のキーを含む構造体の配列、String key, String label
keyは、テキストフォーマットプラグインを識別する固有の文字列であり、labelは、ユーザに表示される説明である。keyは、mt_convert_breaksにて、newPostとeditPostに渡されなければならない値である
パラメータ: String postid
戻り値: 以下のキーを含む構造体の配列、String pingTitle (TrackBack pingによって送信された、エントリのタイトル), String pingURL (エントリのURL), String pingIP (TrackBack pingを送信したホストのIPアドレス)
パラメータ: String postid, String username, String password
戻り値: 成功の場合、boolean true value; 失敗の場合、fault
注: 全てのBlogger XML-RPCメソッドにある、appkey
の値は、MovableTypeにおいては無視される。
w.bloggar, BlogApp, BlogLet, BlogBuddy, Jericho などのような既存のツールによって、Movable Type の XML-RPC 実装を利用することができる。例えば、Movable Type ウェブログに書き込みをするのに、 BlogBuddy を使うには、下記のような手順に従う。:
weblog(s)
への新しい書き込みが可能となる。
Movable Type のソースコードは、オブジェクト指向で記述されていて、あなた自身の Perlプログラムで使える、定評のある Perl API を用いている。ドキュメントそれ自体は、POD フォーマットで記述され、.pm ファイルに含まれている。シェルで、perldoc コマンドを用いてこのドキュメントを読むことができる。例えば、:
% cd <movable type directory>/lib % perldoc MT
Movable Type のプラグインフレームワークにより、容易にシステムに新しいタグを加えることができる。将来的には、さらに、呼び出し可能な機能性を追加する予定である。
プラグインファイルは、特別なディレクトリにある Perlスクリプトである。Movable Type が初期化されるときに、全てのプラグインがロードされる。それによって、Movable Type のソースコードや、実行環境下のシステムを変更することが可能となる。.pl 拡張子のつくファイルだけを、プラグインとみなし、自動的にロードする。
プラグイン ディレクトリは、 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.org/resources.shtml から、プラグインをダウンロードすることができる。