個別の記事毎に RSS フィードを生成する

Posted by
ぴろり
Posted at
2007/01/17 23:27
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ

 更新された情報にすばやくアクセスできる 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 が並行して生成されることになります。

アーカイブ設定画面の例

このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2007年
全てのカテゴリ »
MovableType
全てのタグ »
, , ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。