Movable Type でコメント用 RSS フィードを出力する
Movable Type でコメント用の RSS フィードを出力するカスタマイズです。ご質問を頂きましたので本エントリーにて紹介致します。
ネットで検索すると過去の記事がいくつかヒットしましたが、それを使ってみると RSS リーダーで正常に読み込めないケースがあったため、新たに作り直してみました。
livedoor reader、Google リーダー、feedpath Rabbit で正常に購読できることを確認しています。
livedoor reader のサンプル
Google リーダーのサンプル
feedpath Rabbit のサンプル
1.設定方法
「デザイン」→「テンプレート」より「インデックステンプレートを作成」をクリック。
次の画面で以下の内容を設定してください。
- テンプレート名:Comment RSS
- テンプレートの内容:下記
- テンプレートの種類:RSS
- 出力ファイル名:comments.xml(何でもいいです)
- 再構築オプション:チェック
<$MTHTTPContentType type="application/rss+xml"$><?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><$MTBlogName remove_html="1" encode_xml="1"$></title>
<link><$MTBlogURL$></link>
<description><$MTBlogName remove_html="1" encode_xml="1"$>へのコメント</description>
<language><$MTBlogLanguage ietf="1"$></language>
<pubDate><MTComments lastn="1"><$MTCommentDate format_name="rfc822"$></MTComments></pubDate>
<generator>http://www.sixapart.com/movabletype/</generator>
<MTComments lastn="15" sort_order="descend">
<item>
<title>「<MTCommentEntry><$MTEntryTitle remove_html="1" encode_xml="1"$>」へのコメント</MTCommentEntry></title>
<link><MTCommentEntry><$MTEntryPermalink encode_xml="1"$></MTCommentEntry>#comment-<$MTCommentID$></link>
<dc:creator><$MTCommentAuthor$></dc:creator>
<pubDate><$MTCommentDate format_name="rfc822"$></pubDate>
<guid><MTCommentEntry><$MTEntryPermalink$>#comment-<$MTCommentID$></MTCommentEntry></guid>
<description><$MTCommentBody remove_html="1" encode_xml="1"$></description>
<content:encoded><![CDATA[<$MTCommentBody$>]]></content:encoded>
</item>
</MTComments>
</channel>
</rss>
下は設定イメージです。
保存後、再構築すれば完成です。
2.公開方法
テンプレートモジュールの「ヘッダー」にある link 要素のところに青色の link 要素を追加すれば、RSS リーダーで登録しやすくなります。併せてブログ上にコメント用RSSのリンクを表示すると良いでしょう。
<MTIf name="main_template">
<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTLink template="atom"$>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<$MTLink template="rss"$>" />
<link rel="alternate" type="application/rss+xml" title="Comment RSS" href="<$MTLink template="Comment RSS"$>" />
</MTIf>
title 要素の名称が相応しくないようでしたらご指摘ください。
3.表示コメント数の変更
MTComments タグの lastn モディファイアの値を変更してください。デフォルトは15件にしています。
<MTComments lastn="15" sort_order="descend">
4.link 要素と guid 要素について
item 要素内の link 要素と guid 要素は、ユニークな値でなければならないため、このテンプレートではブログ記事のURLに、フラグメント(リンクの#以降の部分)としてコメントIDを付与した形式にしています。
この要素の設定が、ブログの設定ときちんと合っていれば、RSS リーダーで表示される記事へのリンク(ここでは記事+コメントのリンク)をクリックした時に、ブログの該当記事の該当コメントの位置にジャンプしてくれます。
デフォルトテンプレートではフラグメントは、
<$MTEntryPermalink$>#comment-<$MTCommentID$>
となっていますので、このエントリーで配布しているテンプレートもそれにあわせています。
他のテンプレートを利用している場合はフラグメントを確認して適宜修正してください(修正箇所は2つあります)。ちなみに、当サイトのテンプレートをご利用の場合は、
<$MTEntryPermalink$>#c<$MTCommentID$>
としてください。
5.MTHTTPContentTypeタグについて
先頭の MTHTTPContentType タグは、ダイナミックパブリッシングで出力するときに必要なものです。スタティックパブリッシングの場合は何も処理されないので削除する必要はありません。
6.更新日時について
参考までに、更新日時は、下記の MTCommentDate タグに format_name モディファイアで取得しています。
<$MTCommentDate format_name="rfc822"$>
format_nameモディファイアに"rfc822"を設定しておけば、RSS2.0 の仕様に合った形式で更新日付が出力されます。
format_nameモディファイアには、"rfc822"の他、"iso8601"も設定できます。
6.関連記事
- RSSリーダーの本文表示の違いを探る(その3:NoCDATAの利用)
- RSSリーダーの本文表示の違いを探る(その2)
- RSSリーダーの本文表示の違いを探る(その1)
- Feed Validator警告除去(Onclick属性削除プラグイン)
≫ 昨日と今日の作業内容(コメント機能の復旧) from ちはろぐ
Movable-Typeでの最新コメントのATOMフィードテンプレートを作りました(配布はしてません) [続きを読む]
Sleipnir + Headline-Reader でも
購読出来ること、確認いたしました。
ちなみに「コメント行数」の指定はなく、全文読み込み
ということですね。FC2等では「全文」か「一部」を指定
できましたので、もし可能でしたら、そのやり方もお教
えいただけると幸いです。
勿論、お時間のある時で結構です。
コメントRSSか出力できるようになっただけ、大変
助かりました。
お忙しいところ、対応していただき本当に有難うござい
ました。
>Aikoさん
こんばんは。
ご返事遅くなりすいません。
ご質問の件ですが、
<description><$MTCommentBody remove_html="1" encode_xml="1" $></description>
<content:encoded><![CDATA[<$MTCommentBody$>]]></content:encoded>
の部分を
<description><$MTCommentBody remove_html="1" encode_xml="1" words="30"$></description>
<content:encoded><![CDATA[<$MTCommentBody remove_html="1" words="30"$>]]></content:encoded>
にしてみてください。
words は先頭からの取得文字数を設定するものです。値は適宜書き換えてください。
それではよろしくお願い致します。
YUJIROさん
こんにちは!
いつも役に立つ情報をありがとうございます。
さて、この記事はRSSをPushするということですが、逆にRSSを飛ばしたくない
ATOMも飛ばしたくない場合は、indexテンプレートの双方を削除してしまえば
よいのでしょうか?
プライベートの情報用に使っており公開はしたくないというのが理由です。
もしも、ご存知でしたらお教えください。
EHL
>eaglehaslandedさん
こんばんは。
当サイトをご利用くださりありがとうございます!
ご質問の件ですが、その通りです。厳密にはテンプレートを削除するか、テンプレート編集画面の「テンプレートの設定」にある「公開」を「公開しない」にするかのいずれかです。
それではよろしくお願い致します。