Movable Type でコメント用 RSS フィードを出力する

Movable Type でコメント用 RSS フィードを出力する

Posted at February 6,2008 2:20 AM
Tag:[Comment, MovableType, RSS, Template]

Movable Type でコメント用の RSS フィードを出力するカスタマイズです。ご質問を頂きましたので本エントリーにて紹介致します。

ネットで検索すると過去の記事がいくつかヒットしましたが、それを使ってみると RSS リーダーで正常に読み込めないケースがあったため、新たに作り直してみました。

livedoor readerGoogle リーダーfeedpath Rabbit で正常に購読できることを確認しています。

livedoor reader のサンプル

livedoor reader のサンプル

Google リーダーのサンプル

Google リーダーのサンプル

feedpath Rabbit のサンプル

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.関連記事

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


トラックバック

昨日と今日の作業内容(コメント機能の復旧) from ちはろぐ
Movable-Typeでの最新コメントのATOMフィードテンプレートを作りました(配布はしてません) [続きを読む]

Tracked on May 24, 2009 3:04 AM
コメント

Sleipnir + Headline-Reader でも
購読出来ること、確認いたしました。

ちなみに「コメント行数」の指定はなく、全文読み込み
ということですね。FC2等では「全文」か「一部」を指定
できましたので、もし可能でしたら、そのやり方もお教
えいただけると幸いです。

勿論、お時間のある時で結構です。
コメントRSSか出力できるようになっただけ、大変
助かりました。
お忙しいところ、対応していただき本当に有難うござい
ました。

[1] Posted by Aiko : February 6, 2008 6:41 PM

>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 は先頭からの取得文字数を設定するものです。値は適宜書き換えてください。
それではよろしくお願い致します。

[2] Posted by yujiro logo : February 14, 2008 11:50 PM

YUJIROさん

こんにちは!
いつも役に立つ情報をありがとうございます。

さて、この記事はRSSをPushするということですが、逆にRSSを飛ばしたくない
ATOMも飛ばしたくない場合は、indexテンプレートの双方を削除してしまえば
よいのでしょうか?

プライベートの情報用に使っており公開はしたくないというのが理由です。
もしも、ご存知でしたらお教えください。

EHL

[3] Posted by eaglehaslanded logo : January 22, 2009 9:42 PM

>eaglehaslandedさん
こんばんは。
当サイトをご利用くださりありがとうございます!

ご質問の件ですが、その通りです。厳密にはテンプレートを削除するか、テンプレート編集画面の「テンプレートの設定」にある「公開」を「公開しない」にするかのいずれかです。
それではよろしくお願い致します。

[4] Posted by yujiro logo : January 23, 2009 1:36 AM

YUJIROさん

即レスありがとうございます。
本当にいつもいつも助かっています。

今後もよろしくお願いいたします。

[5] Posted by eaglehaslanded logo : January 23, 2009 10:20 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)