更新された情報にすばやくアクセスできる RSS は、特に Web サイトの更新情報を配信する手段として有効です。そこでこの RSS をブログの記事一つ一つについて、その記事に寄せられるコメントやトラックバックを通知する手段として使えないでしょうか? 自分が特に気になる記事にだけ注目して、そこで交わされるコメントやトラックバックによる議論を容易に追跡できるようになります。
このエントリでは MovableType で個別の記事毎に RSS を配信するための方法を紹介しています。
記事が公開された以降に更新される情報としては、その記事に寄せられるコメントとトラックバックがあります。そこで記事に寄せられた最新コメントと最新トラックバックを RSS として配信することを考えます。ビジターはその RSS を購読することで、コメントでの議論やトラックバックによる付加的情報に容易にアクセスすることができます。また自分が残したコメントに対する返信があったことを感知するなどの使い道なども考えられます。
coCommentはこれと似たことをサービスとして提供しています。しかし高機能である反面、使い始めるためにユーザ登録が必要になるなどの手間がかかります。気になった記事を片手間にチェックするためだけに使うにはオーバースペックでしょう。RSSであれば今お使いのアグリゲータに登録するだけで済みますし、 用済みになれば単に購読を取りやめるだけで事足ります。
記事につけられたコメントとトラックバックを同様に取り扱うためにSimpleCommentプラグインと、また、出力文字コードの変換のためにmt-jcodeが必要です。
プラグインの準備が整ったら次に、次の内容でアーカイブテンプレートを作成し、これを個別アーカイブとして出力するようにします。テンプレートは UTF-8
で作成・保存してください。
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" <MTBlogIfCCLicense> xmlns:cc="http://web.resource.org/cc/"</MTBlogIfCCLicense> xmlns="http://purl.org/rss/1.0/" > <channel rdf:about="<$MTEntryPermalink$>"> <title><$MTEntryTitle encode_xml="1" jcode="utf8"$></title> <link><$MTEntryPermalink$></link> <description> <$MTEntryBody trim_to="480" remove_html="1" encode_xml="1" jcode="utf8"$> </description> <dc:language>ja</dc:language> <dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date> <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" /> <MTBlogIfCCLicense> <cc:license rdf:resource="<$MTBlogCCLicenseURL$>" /></MTBlogIfCCLicense> <image rdf:resource="<$MTBlogURL$>banner2.png" /> <items> <rdf:Seq> <MTSimpleComments lastn="10" sort_order="descend"><MTSimpleCommentIfComment> <rdf:li rdf:resource="<$MTEntryPermalink$>#c<$MTCommentID$>" /> </MTSimpleCommentIfComment><MTSimpleCommentIfTrackback> <rdf:li rdf:resource="<$MTEntryPermalink$>#p<$MTPingID$>" /> </MTSimpleCommentIfTrackback></MTSimpleComments> </rdf:Seq> </items> </channel> <image rdf:about="<$MTBlogURL$>banner2.png"> <url><$MTBlogURL$>banner2.png</url> <title><$MTBlogName encode_xml="1" jcode="utf8"$></title> <link><$MTBlogURL$></link> </image> <MTSimpleComments lastn="10" sort_order="descend"><MTSimpleCommentIfComment> <item rdf:about="<$MTEntryPermalink$>#c<$MTCommentID$>"> <title>[コメント] <$MTCommentAuthor encode_xml="1" jcode="utf8"$> さん</title> <link><$MTEntryPermalink$>#c<$MTCommentID$></link> <description> <$MTCommentBody trim_to="480" remove_html="1" encode_xml="1" jcode="utf8"$> </description> <dc:subject>コメント</dc:subject> <dc:creator><$MTCommentAuthor encode_xml="1" jcode="utf8"$></dc:creator> <dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date> </item> </MTSimpleCommentIfComment><MTSimpleCommentIfTrackback> <item rdf:about="<$MTEntryPermalink$>#p<$MTPingID$>"> <title>[トラックバック] <$MTPingTitle encode_xml="1" jcode="utf8"$></title> <link><$MTPingURL encode_xml="1"$></link> <description> <$MTPingExcerpt trim_to="480" remove_html="1" encode_xml="1" jcode="utf8"$> </description> <dc:subject>トラックバック</dc:subject> <dc:creator><$MTPingBlogName encode_xml="1" jcode="utf8"$></dc:creator> <dc:date><$MTPingDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date> </item> </MTSimpleCommentIfTrackback></MTSimpleComments> </rdf:RDF>
作成したアーカイブテンプレートを使って個別アーカイブを出力するようにします。例えば、記事ファイルの出力ファイル名の設定が<$MTArchiveDate format="%Y/%m/%d_%H%M"$>/index.php
であれば、RSS は <$MTArchiveDate format="%Y/%m/%d_%H%M"$>/index.rdf
などのようにします。これにより、各記事毎に記事本文と RSS が並行して生成されることになります。