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 はオプションです。このフラッグがないと、アレイの最初の構造体が投稿されたエントリーのメイン・カテゴリーに割り当てられます。
機能; サーバーがサポートするXML-RPCメソッドについての情報を取得します。
パラメータ: なし
返り値: サーバーがサポートするメソッド名の配列
機能; サーバーがサポートするテキスト・フォーマットのプラグインについての情報を取得します。
パラメータ: なし
返り値: String key とString label を含む構造体の配列。 key はテキスト・フォーマットのプラグインを特定する固有な文字列で、 label はユーザーに表示される説明です。 key は mt_convert_breaks のパラメータとして newPost と editPost に渡される値です。
機能; 特定のエントリーに投稿されたトラックバックpingのリストを取得します。 このメソッドは、特定のエントリーに送られたpingのリストをプログラミングによって取得し、特定のトピックに対し互いに参照し合うエントリー群のウェブグラフを作り上げるまで、リストで得られたpingを次々に反復動作処理するときに使用することもできます。
パラメータ: String postid
返り値: 次を含む構造体の配列:String pingTitle (pingによって送られたエントリーのタイトル)、String pingURL (エントリーのURL)、およびString pingIP (pingを送ったホストのIPアドレス)
機能; 1つのエントリーに関連したスタティック・ファイルをすべて、ブログから公開 (再構築) します。 エントリーをシステムに保存することと同じですが、pingを送信しないところが異なります。
パラメータ: 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 と名付けます。
以下の手順に従ってサンプルのプラグインを利用すると、 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
条件タグは実際にはコンテナ・タグのひとつですが、条件タグを書く作業を簡単にするため、 add_conditional_tag メソッドを使うことができます。 このメソッドは二つの引数を取ります。それは、タグ名と、条件が合致するかどうかで真か偽の値を返すサブルーチンへのリファレンスです。
たとえば、以下のコードは次の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>
add_global_filter メソッドを使うと、グローバル・タグ・アトリビュート(属性)を加えることができます。
例:
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 からダウンロードできます。