Alternative Design Project

ADP: (新)RSSに最新コメントと最新トラックバックを

2004年03月23日 20:17 | コメント(0) | トラックバック(0)

前回のが酷かったので置き換え。

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中でそれらを参照先とすることで解決させた。

トラックバック(0)

トラックバックURL: http://adp.daa.jp/cgi/mt2/mt-tb.cgi/101

コメント(0)

コメントの内容確認のため、反映されるまで時間がかかる場合があります。e-mailはサイトに掲載されません。

このページの先頭へ