Movable Type 備忘録

 Movable Type のコメント投稿をフィードで配信

  • Apr272008
  • Vote:
    http://bizcaz.com/archives/2008/04/27-223006.php
  • Categories: Customize
  • Tags: ,
  • Social Bookmark

こんばんわ^^

今回はちょっと野暮用でサクっとご紹介しちゃいます (; ̄∇ ̄A

タイトルにもあるように、コメント用の Atom フィードをわたしのサイトでも出力するようにしましたのでそのコードのご紹介です。

設置の仕方

以下の手順で設置します。
[2008.05.03] ご紹介したコード中に配布してるテンプレート用のコードが一部入ってたので修正しました。

  1. コメント用フィードテンプレート作成
    以下のコードがコメント用フィードのテンプレートになります。

    1. <$MTHTTPContentType type="application/atom+xml"$><?xml version="1.0" encoding="<$MTPublishCharset$>"?>
    2. <feed xmlns="http://www.w3.org/2005/Atom">
    3.   <title><$MTBlogName remove_html="1" encode_xml="1"$>へのコメント</title>
    4.   <link rel="alternate" type="text/html" href="<$MTBlogURL encode_xml="1"$>" />
    5.   <link rel="self" type="application/atom+xml" href="<$MTLink template="フィード(コメント)"$>" />
    6.   <id>tag:<$MTBlogHost exclude_port="1" encode_xml="1"$>,<$MTTemplateCreatedOn format="%Y-%m-%d"$>:<$MTBlogRelativeURL encode_xml="1"$>/<$MTBlogID$></id>
    7.   <MTIfNonEmpty tag="MTBlogDescription"><subtitle><$MTBlogDescription remove_html="1" encode_xml="1"$></subtitle></MTIfNonEmpty>
    8.   <generator uri="http://www.sixapart.com/movabletype/"><$MTProductName version="1"$></generator>
    9.  
    10.   <MTEntries recently_commented_on="20">
    11.     <MTComments lastn="5" sort_order="descend">
    12.     <entry>
    13.       <title type="html"><$MTCommentAuthor$> が'<$MTEntryTitle remove_html="1" encode_xml="1"$>'にコメントしました。</title>
    14.       <published><$MTCommentDate format_name="rfc822"$></published>
    15.       <updated><$MTCommentDate format_name="rfc822"$></updated>
    16.       <id><$MTEntryAtomID$></id>
    17.       <link type="text/html" rel="alternate" href="<$MTEntryLink$>#c<$MTCommentID$>"/>
    18.       <author>
    19.         <name><$MTCommentAuthor$></name>
    20.         <uri><mt:ignore><$MTCommentEmail$></mt:ignore></uri>
    21.       </author>
    22.       <content type="html">
    23.         &lt;div class="content"&gt;
    24.             &lt;p style="float:right;"&gt;&lt;img src="<$MTStaticWebPath$>images/status_icons/success.gif" alt="公開" width="9" height="9" /&gt;&lt;a href="<$MTEntryLink$>"&gt;公開&lt;/a&gt;&lt;/p&gt;
    25.  
    26.             &lt;p&gt;
    27.             &lt;b&gt;ブログ:&lt;/b&gt; &lt;a href="<$MTBlogURL$>"&gt;<$MTBlogName remove_html="1" encode_xml="1"$>&lt;/a&gt;&lt;br /&gt;
    28.  
    29.             &lt;b&gt;ブログ記事:&lt;/b&gt; &lt;a href="<$MTEntryLink$>"&gt;<$MTEntryTitle remove_html="1" encode_xml="1"$>&lt;/a&gt;&lt;br /&gt;
    30.  
    31.             &lt;b&gt;コメント投稿者:&lt;/b&gt; <$MTCommentAuthor$>&lt;br /&gt;
    32.             &lt;b&gt;メール:&lt;/b&gt; <mt:ignore><$MTCommentEmail$></mt:ignore>&lt;br /&gt;
    33.             &lt;b&gt;URL:&lt;/b&gt;<$MTCommentURL$> &lt;br /&gt;
    34.             &lt;/p&gt;
    35.           &lt;p&gt;
    36.         &lt;/div&gt;
    37.  
    38.         <$MTCommentBody remove_html="1" encode_xml="1"$>
    39.         &lt;hr /&gt;
    40.       </content>
    41.     </entry>
    42.     </MTComments>
    43.   </MTEntries>
    44. </feed>
  2. 各自のブログのインデックステンプレートを新規作成して、上記コードをコピー & ペーストしてください。
    そして、テンプレート名称は各自のお好みで構いません。たとえば、「フィード(コメント)」なんて名前にしておきます。 その際、赤字で記したコメント用フィードのテンプレート名称も合わせて変更してください。

    また、出力ファイル名称にはこれもお好みで構いません。他のフィード(RSS2.0 など)と同じ場所が良いのではないでしょうか ( ̄∇ ̄)b

  3. 表示確認
    テンプレートをコピーしたら再構築して、ブラウザからでも RSS リーダーからでもいいですので、表示確認してください。

以上です。
コメント投稿の状況をフィードで配信するので便利かと思うのココロ。

一応 livedoor Reader、Google Reader で確認済みです。
サクっと作ったものなので、不手際などありましたらご指摘頂けると嬉しいですの (●´∀`●)

そそ、配布してるテンプレートには既に組込み済みです。

 Trackback Pings(1)

from 笑むなAikoの『お玉杓子は飲み物です』

RSSフィードのコメントRSS出力のご紹介を以前しましたが、Movable Type 備忘録 様で新しいタイプが公開されました。...

 Comments(7)

#1: Posted by Author Profile Page Aik☆ @ May 3, 2008 [REPLY]
user-pic

コメントテンプレート、使わせていただいてますσ(^^)。

早速質問なのですが、デフォルトでは remove_html="1" で<br /> (HTML)が全て取り除かれひとつの段落になっていますよね。
ブログコメントと同じ整形(改行)でフィードを取得するには何処をいじればよいのでしょうか?。

$MTCommentBody あたりをいじったのですが、いじるとフィードが取得できなくなってしまうんです(__;)。

#2: Posted by Author Profile Page bzbell @ May 3, 2008 [REPLY]
user-pic

>>1 Aik☆ さん

こんにちわ^^

> $MTCommentBody あたりをいじったのですが、いじるとフィードが取得できなくなってしまうんです(__;)。

えっ!? remove_html を削除すれば問題なさそうですけどね。
試しにわたしのサイトのコメント・フィードをやってみました。
ご確認くださいテレテレ

#3: Posted by Author Profile Page Aik☆ @ May 3, 2008 [REPLY]
user-pic

えっと、最初よくソースを見ないで貼り付けた時に、
<link rel="self" type="application/atom+xml" href="<$MTLink template="feeds/comment"$>" />
で再構築エラーが出たのでこの行を削除したのですが、関係あるんでしょうか。

remove_html を削除して直接URLにアクセスすると

要素内容内ではリテラル文字 ']]>' が許可されません。
リソース 'http://surak.private.coocan.jp/aiko/comments.xml' の実行エラーです。

という表示が出てフィードが出力されないのです。
なんか初歩的な処で躓いているような気が…。

ちなみにウチは atom の出力はしていないです。


#4: Posted by Author Profile Page bzbell @ May 3, 2008 [REPLY]
user-pic

>>3 Aik☆ さん

> <link rel="self" type="application/atom+xml" href="<$MTLink template="feeds/comment"$>" />で再構築エラーが出たのでこの行を削除したのですが、関係あるんでしょうか。

あちゃキャハハ
すいません。
remove_html の件とは関係ないですが、MTLink の template モディファイアには テンプレート名称を指定してください。
たとえば、'フィード(コメント)' といったかんじで。

わたしのサイトのコメント用フィードには識別子(feeds/comment)がついてるのですが、通常新規で作成した場合には識別子は付加されないんです。

それはさておき、たぶん投稿されたコメントの内容がまずいかもしれないですねウインク
remove_html を削除したバージョンのフィードを新規作成して、その URL を教えてもらえますか。確認してみます。

#5: Posted by Author Profile Page Aik☆ @ May 3, 2008 [REPLY]
user-pic

>>4 bzbell さん

bzbell さん、お忙しいところ申し訳ありません。

私のほうもテンプレート名と出力ファイル名がごっちゃになっていました。
教えて頂いた通りで再構築エラーは出ませんが…。やっぱエラーになるようです。

http://surak.private.coocan.jp/aiko/Commenttest.rss

いちをIE6で確認しました。

#6: Posted by Author Profile Page Aik☆ @ May 3, 2008 [REPLY]
user-pic

>>4 bzbell さん
お世話様でしたm(__)m。
アドバイスいただいたように、直接次を書き換えましたら
エラー無く表示されるようになりました^_^;。

<$MTCommentBody remove_html="1" encode_xml="1"$>

<![CDATA[<$MTCommentBody$>]]>

ちなみに < はそのまま書かないとダメなんですね。
最初、他に合わせて
&lt;![CDATA[<$MTCommentBody$>]]&gt;
としたら今度は中途半端にいくつかのコメントが出力され
途中からエラーになりました(O.O;)(o。o;)。

#7: Posted by Author Profile Page bzbell @ May 3, 2008 [REPLY]
user-pic

>>6 Aik☆ さん

> お世話様でしたm(__)m。

いいえぇ、どぉいたしましてワクワク
でもね、何で Aiko さんのフィードだとダメなのかその後調べてみたら、どぅやらコメントの最初の段落には <p> タグが付加されてなくって、次の段落から <p> タグが付加されてます。
だから encode_xml モディファイアで CDATA が付加されず、おしりの ]]> だけが付加されたように思います。

まぁ、どちらにしても直接埋め込むことで問題解決できて何よりですキャハハ

 Post a Comment

 

コメント用フィード