Movable Typeのトラックバック・システムによって、ブログ間で一対一のコミュニケーションや対話が可能になります。 たとえば、あなたがMovable Typeを使ったブログに、鑑賞したばかりの映画について書いたとします。 それを、Movable Typeを使っている別のブログ作成者(ブロガー)が読み、それについてエントリーを書こうとしています。 彼はあなたのブログにコメントを投稿するよりも、そのコメントを自分のデータベースに保管し自分のサイトにホストしたいと考えました。
トラックバックを使うと、別のブロガーがあなたのブログにpingを自動送信し、あなた発の投稿に関してエントリーを書いたことを知らせることができます。 それによって、以下の2つが達成できます。
しかし、トラックバックは、エントリーについてのコミュニケーション以上の役割を果たします。 トラックバックpingのURLは、ブログのカテゴリーに関連づけることもできます。 そしてそのカテゴリーにエントリーを投稿するたびに、関連付けたURLに、その投稿を通知することができます。 これによって、別のサイトではウェブ中に存在する投稿の参照先を蓄積していくことができます。
たとえば、あなたがPerlについてのサイトを開いているとします。そして他のブログにあるPerlの記事へのリンク集を提供したいと考えました。 トラックバックを使うと、別のブログからも、あるカテゴリーに属する新しいエントリーが投稿されるたびに、あなたのブログの該当するカテゴリーにpingを送信することができます。
これらはトラックバックの使用例にすぎません。 トラックバック自体は、ブログ間で一対一のコミュニケーションを実現するフレームワークです。トラックバックは、ブログ間の議論を追跡したり、別のコンテンツへのリンクを提供したり、ゲストによるエントリー作成をエミュレートしたり、そのほか、いろいろなことができます。 トラックバックのメカニズムはとても単純です。 別のサイトにあなたの存在を知らせたい場合は、そのサイトにpingを送信します。 これらのping(簡単なHTTP GETリクエスト)のフォーマットは後述します。 Movable Typeにトラックバックを実装するにあたり、シックスアパート社では、カテゴリー対象のping送信、特定のIPアドレスの禁止、自動RSS出力、および新しいpingのメール通知といったアクションに対し、パスワードで保護しました。
つまり、私達はMovable Typeのユーザー以外の方々にもトラックバックからの恩恵を受け、活用してもらいたいと考えています。 この機能をぜひ他のブログのツールにも統合してもらいたいと考えています。そのために、pingのフォーマットを下に公開し、基本的なフレームワークをとても簡素なものにしています。
新しくMovable Typeを使う場合は、トラックバックのタグがデフォルト・テンプレートに含まれているため、Movable Typeをインストールすれば直ちにトラックバックを使用できます。 次のステップ5まで飛ばします。
既にMovable Typeを使っている場合は、テンプレートをトラックバックpingが扱えるように設定する必要があります。 次のステップ1から始めてください。
「テンプレートのリスト」で、「トラックバック・リストのテンプレート」を編集し、それをデフォルト・テンプレートの本文で初期化します。 デフォルト・テンプレートは以下にあります。
http://www.sixapart.com/movabletype/default_templates#trackback_listing_template
エントリーのトラックバックpingが、エントリーのコメントを一覧表示するときのように、ポップアップ・ウィンドウにすべて表示されます。 ステップ1で加えたデフォルト・テンプレートは、バージョン2.2で新しくなったCSSスタイルの一部を使っています。 Movable Type搭載のデフォルト・スタイルのいずれかを使っている場合は、以下のスタイルからコピーして更新されたバージョンに貼り付けます。
http://www.sixapart.com/movabletype/default_styles
独自のスタイルシートを使っている場合は、トラックバック・リストのテンプレートをカスタマイズしてあなたのサイトのスタイルに一致させるか、.trackback-url、.trackback-body、および.trackback-postクラスに新しいCSSスタイルを加えます。
メイン・インデックス・テンプレートの<script>セクションに、以下のコードを加えます。
function OpenTrackback (c) { window.open(c, 'trackback', 'width=480,height=480,scrollbars=yes,status=yes'); }
次に、<MTEntries>タグ内に、以下のコードを加え、各エントリーのトラックバック・リストへのリンクを表示します。
<MTEntryIfAllowPings> | <a href="<$MTCGIPath$>mt-tb.cgi?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">TrackBack (<$MTEntryTrackbackCount$>)</a> </MTEntryIfAllowPings>
メイン・インデックス・テンプレート、およびカテゴリーと日付に基づくアーカイブ・テンプレートにあるメイン<MTEntries>
タグの直後に、以下のタグを加えます。
<$MTEntryTrackbackData$>
次に、個別のエントリー・アーカイブ・テンプレートのどこかに、以下の同じタグを加えます。
<$MTEntryTrackbackData$>
再構築すると、これがあなたの公開ファイルに必要な情報を加え、それによってMovable Typeのブックマークレットが、トラックバックの許可されているエントリーを解析して、これらのエントリーのping URLを獲得できるようになります。
トラックバック有効のブックマークレットとは、標準のMovable Typeブックマークレットに新しい機能を1つ加えた新しいバージョンにすぎません。 その新機能とは、ブックマークレットを使ってブログに投稿するときに、ブックマークレットがブラウザの現在開いているページを見て、そこにトラックバックが有効になったエントリーがあるかどうかをチェックできる、という機能です。 (この情報はステップ4で加えたタグを使って獲得します)。 該当するエントリーがあった場合は、ブックマークレットを使って、トラックバック有効のエントリーのリストからいずれかを選択できます。こうしたエントリーは、新しい投稿についてpingを送信できるページ上にあります。 新しいエントリーを投稿すると、Movable Typeは自動的に該当するエントリーのURLにpingを送信します。これは、あなたが「トラックバック先のURL」ボックスに手動でURLを入力する作業と似ています。 これがトラックバックを使って別のサイトにある投稿を参照するプロセスを簡素化します。
ブックマークレットをすでに使っている場合は、現在使っている同じフィールドに加え、「トラックバックする」フィールドも使い、ブックマークレットを再び作成します。 ブックマークレットをまだ使っていない場合は、新しく作成します。
「メインメニュー」に移動し、「クイックポストの作成
」をクリックします。 表示される指示に従って新しいブックマークレットを作成し、「トラックバックする」フィールドを含んでいることを確認します。
これで、トラックバック・システムを使えるようになりました。
ブックマークレットはブラウザで以下のページにアクセスすると、テストできます。 http://www.movabletype.org/trackback/
ブラウザがそのページを表示したら、Movable Typeのブックマークレットをクリックします。 開いたウィンドウの上部には、「トラックバックするエントリーを選んでください:」というプルダウン・メニューが表示されているはずです。 メニューには、上のページにあるトラックバック有効のエントリーがすべて一覧されています。
メニューが表示されていると、ブックマークレットは機能しており、トラックバックの使用を開始できる状態です。
メニューが表示されていない場合は、mt-check.cgiを実行し、LWP::UserAgentがインストールされているかどうかをチェックします。 このモジュールはトラックバックを使うのに必要です。
トラックバックは、一般的に、別々のサイトにあるエントリーの間でコミュニケーションを取るためと、別々のサイトにあるカテゴリーの間でコミュニケーションを取るための2つの目的で使用できます。 さらに、それぞれのシナリオで、あなたはエントリーを投稿するコンテンツ作成者になることも、トラックバック・アイテム(エントリーであってもカテゴリーであっても)に関する投稿エントリーのリストを集めるコンテンツ収集者になることもできます。
コンテンツ収集者として: あなたが投稿した新しいエントリーに対し、他のユーザーがpingを送信することを許可する場合は、「トラックバックを受けいれる」チェックボックスをチェックします。 すると、トラックバック先URLは、トラックバックのポップアップ・ウィンドウに表示されると同時に個別のアーカイブ・ページ上の<link>タグ内に保存され、Movable Typeのブックマークレットがそれを自動的に使用できるようになります。コンテンツ作成者として:新しいエントリーを投稿し、別のウェブサイトのエントリーにpingを送信する場合は、上述の「トラックバックの設定」のステップ5で設定したMovable Typeのブックマークレットを使い投稿することも、手動で「新しいエントリー/エントリーの編集」画面に別のサイトのトラックバックping URLを加えることもできます。
コンテンツ収集者として: カテゴリーを「トラックバックを受けいれる」に指定することができます。 これによってそのカテゴリーにトラックバック・アイテムを設定でき、別のサイトがあなたのサイトにpingを送信し、そのカテゴリーに合う新しいエントリーについてあなたに通知できるようになります。 これらのpingはそのときあなたのサイトに表示されるので、特定のトピックについてのリンク集を作成できます。コンテンツ作成者として: トラックバック先のURLのリストを1つのカテゴリーに関連付けられます。 あなたのサイトで新しいエントリーをこのカテゴリーに投稿すると、リストにある各URLはこの新しいエントリーの情報とともにpingされます。
pingがあなたのサイトのトラックバック・アイテムに送られると、システムは、Movable Typeのデータベースにpingを保存するほか、トラックバック・アイテムのRSSフィードを更新します。 XML出力は、ローカル・アーカイブ・パスにあるID.xmlというファイルに保存されます。そこではIDがトラックバック・アイテムの数字から成るIDになっています。
Windows XP IISサーバーでトラックバックを設定するには、次のステップに従います。
トラックバックは、pingにRESTモデルを使い、各トラックバック・アイテムが、その数字から成るIDによって固有のURLを有することを確認します。
リクエストがHTTP GETを介して、通常以下のようにping先URLに送られます。
http://foo.com/mt/mt-tb.cgi?tb_id=ID
上のID
は、トラックバック・アイテムの数字から成るIDです。 リクエスト・パラメータは以下のようにURLの最後に追加されます。
>http://example.com/mt/mt-tb.cgi?tb_id=ID&title=TITLE&url=URL
上は一例です。クエリーのパラメータには以下があります: title (エントリーのタイトル)、excerpt (エントリーの概要。80文字以上の場合は80文字に削られ、最後に「...
」が付加)、url (エントリーのパーマリンク(permalink))、およびblog_name (エントリーが投稿されたブログ名)。
応答は、簡単なXMLフォーマットで、アプリケーション・レベルのエラー検出が有効です。HTTPレベルのエラーは、たとえば、トラックバック先のURLがサーバー上に存在しない場合にping送信すると、404
エラーが返されるなどの形を取ります。
ping送信に成功すると、以下の応答が返ります。
<?xml version="1.0" encoding="iso-8859-1"?> <response> <error>0</error> </response>
ping送信に失敗すると、以下の応答が返ります。
<?xml version="1.0" encoding="iso-8859-1"?> <response> <error>1</error> <message>The error message</message> </response>
アプリケーションはもちろん、将来必要なときに備え、フィールドを追加できるようにしておくべきです。 ただし、応答のXML構造は将来も同じです。
あるトラックバック・アイテムに作成されたpingのリストを取得するには、以下のフォーマットのURLを使います。
http://foo.com/mt/mt-tb.cgi?tb_id=ID&__mode=rss
上のID
は、トラックバック・アイテムの数字から成るIDです。
このリクエストへの応答は、このリクエストに対するエラーが同じフォーマットで返るか、<response>
タグに挟まれたRSSマークアップに、そのトラックバック・アイテムのトラックバックpingが列挙されているかのいずれかです。
以下に例を挙げます。
<?xml version="1.0" encoding="iso-8859-1"?> <response> <error>0</error> <rss version="0.91"><channel> <title>TrackBack Test</title> <link>http://this.is/the/trackback/item/link/</link> <description>Description of the TrackBack item</description> <language>en-us</language> <item> <title>TrackBack Demo</title> <link>http://this.is/the/permalink/</link> <description>Excerpt</description> </item> </channel> </rss></response>
トラックバック関連要素についてのドキュメントは以下にあります。