前回のが酷かったので置き換え。
MTの場合、デフォルトのindex.rdfは、最近のエントリーのタイトルと概要がわかる。RSSリーダーを使うと、サイトに行かなくても、更新されたのかどうか、どんなエントリーが投稿されたのかがわかる。べんり。
だが、ここではコメントやトラックバックについてはわからない。そこで、RSSに最新コメントの投稿状況と、最新トラックバックの取得状況を表示させることにする。今回は、SimpleCommentsプラグインを使って、コメント、トラックバックの区別なく、直近3件の取得状況をRSSに追加する。
なお、ほかのblogを見てみると、index.rdfではエントリーだけを扱うのがふつうらしいので、ここではインデックステンプレートを追加して、index-wct.rdfという名前にする。サンプルはADPのindex-wct.rdfあたりを。
やりかた。
まず、SimpleCommentsプラグインがない場合はインストールする。SimpleComment(2004年1月13日、sakuraさん)がわかりやすい。
次に、RSS 1.0 Indexテンプレートを変更していく。新しいテンプレートとして、index-wct.rdf用のテンプレートを作成しRSS 1.0 Indexテンプレートをまるごとコピーする。
前半、<items>要素内の</MTEntries>と</rdf:Seq>の間に、
<MTSimpleComments lastn="3" sort_order="descend">
<MTSimpleCommentEntry>
<MTSimpleCommentIfComment>
<rdf:li rdf:resource="<$MTEntryPermalink encode_xml="1"$>#c<MTCommentID>" />
</MTSimpleCommentIfComment>
<MTSimpleCommentIfTrackback>
<rdf:li rdf:resource="<$MTEntryPermalink encode_xml="1"$>#t<MTPingID>" />
</MTSimpleCommentIfTrackback>
</MTSimpleCommentEntry>
</MTSimpleComments>
を埋め込む。ADPでは、Individual Entry ArchiveにもSimpleCommentsプラグインを利用していて、各コメント行には"c<MTCommentID>"、各トラックバック行には"t<MTPingID>"というidをふっている。
続いて、後半、最後の</MTEntries>と</rdf:RDF>との間に
<MTSimpleComments lastn="3" sort_order="descend">
<MTSimpleCommentIfComment>
<MTSimpleCommentEntry>
<item rdf:about="<$MTEntryPermalink encode_xml="1"$>#c<MTCommentID>">
</MTSimpleCommentEntry>
<title>コメント(<$MTCommentDate format="%Y/%m/%d %H:%M" language="en"$>)</title>
<MTSimpleCommentEntry>
<link><$MTEntryPermalink encode_xml="1"$>#c<MTCommentID></link>
<description>「<$MTEntryTitle encode_xml="1"$>」にコメント(by <$MTCommentAuthor encode_xml="1"$>)がありました。</description>
</MTSimpleCommentEntry>
<dc:subject>Comments</dc:subject>
<dc:creator><$MTBlogName encode_xml="1"$></dc:creator>
<dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
</item>
</MTSimpleCommentIfComment>
<MTSimpleCommentIfTrackback>
<MTSimpleCommentEntry>
<item rdf:about="<$MTEntryPermalink encode_xml="1"$>#t<MTPingID>">
</MTSimpleCommentEntry>
<title>トラックバック(<$MTPingDate format="%Y/%m/%d %H:%M" language="en"$>)</title>
<MTSimpleCommentEntry>
<link><$MTEntryPermalink encode_xml="1"$>#t<MTPingID></link>
<description>「<$MTEntryTitle encode_xml="1"$>」に<$MTPingBlogName encode_xml="1"$>「<$MTPingTitle encode_xml="1$>」からトラックバックがありました。</description>
</MTSimpleCommentEntry>
<dc:subject>Trackbacks</dc:subject>
<dc:creator><$MTBlogName encode_xml="1"$></dc:creator>
<dc:date><$MTPingDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
</item>
</MTSimpleCommentIfTrackback>
</MTSimpleComments>
を埋め込む。最後に、RSS 1.0 Indexテンプレートの一番最初に出てくる<dc:date>要素を
<dc:date><$MTDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
のように変える。これで、index-wct.rdfの最終更新時刻は、コメント、トラックバックがきてrebuildされた時点になる。
今回は、投稿/取得状況だけで、内容は当該ページに行かないとわからないようにした。コメントの文章だけ、トラックバックの文章だけ、では、誤解を招くので、参照している本文も読めつーことで、こういう仕様にしている。必要な場合は本文もくわえてくだされ。
その他の仕様。コメント、トラックバックとも、日付を横に入れているのは、蓄積型RSSリーダーで同じタイトルがたくさんたまってしまうことを防ぐため。「日記(3月21日)」と同じタイトルのつけ方、ということ。カテゴリ表示は、CommentsとTrackbacksとした。RSS上の投稿者は、あくまで取得状況の通知なので、コメントやトラックバックをPostした人やサイトの名前ではなく、自分のサイト名とした。
なお、前回ので何が間違っていたかというと、RSS中で複数のitemに同じURIを指定できる可能性を入れていたこと。RSS 1.0の仕様では、URIでitemを識別しているので、各itemで、別のURIを指定しなければならない。つまり、エントリー、コメント通知、トラックバック通知で、それぞれ、別のURIを指定する必要がある。そこで、コメントやトラックバックについては、Individual Entry Archiveにidをふり、RSS中でそれらを参照先とすることで解決させた。
トラックバックURL: http://adp.daa.jp/cgi/mt2/mt-tb.cgi/101