Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

Renewal2009 小技集

MovableTypeとFeedburnerで複数のRSSを配信開始

投稿日:


RSS分割
リニューアルの準備として、前にカテゴリーを整理したんですが、今回はFeedの整理です。前から「RSSでは技術系のエントリーだけ読みたい」という話が聞こえてきたりしたのですが、技術系エントリーを読むような人はRSSのフィルタリングくらい自分でしろよと思わないでもないですが、それで購読をためらわれているのであればもったいないなと思いまして。
カテゴリーは結構細分化してしまったので、全てのカテゴリー毎にRSSを作るのはちょっと・・・と思ったので2種類だけ増やしました。

技術とか全くわからんというウチの相方のような人にはプライベートパックを、ヤガー?だれそれ?興味ねーよっていうギークな人にはテクノロジーパックがいいかもしれません。できれば、この機会にRSSの購読をお願いしまーす。
それでは、続きで設定手順などをかいつまんで説明します。

ベースとなるFeedのテンプレート修正

フィードを分割する前に、少しテンプレートをいじりました。
・「続きを読む」を少し強調
・フッターにソーシャルブックマークボタンを設置
・固定値はMTタグから文字列に変更(負荷対策)

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>creazy photograph</title>
<link>http://creazy.net/</link>
<description>WEBエンジニア、ヤガー(yager)のブログ。PHP、JavaScript、Mac、Twitter、Tumblr、YouTubeとか</description>
<language>ja</language>
<copyright>Copyright (c) <$MTDate format="%Y"$> yager All Rights Reserved.</copyright>
<lastBuildDate><MTEntries lastn="1"><$MTEntryDate format_name="rfc822"$></MTEntries></lastBuildDate>
<MTEntries lastn="20">
<item>
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title>
<description><![CDATA[<$MTEntryBody$>
<MTIfNonEmpty tag="EntryMore" convert_breaks="0">
<p><strong>&raquo;<a href="<$MTEntryPermalink$>" target="_blank">続きを読む</a></strong></p>
</MTIfNonEmpty>
<hr />
<p>
▼ブクマして、後で見る<br />
<a href="http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title=<$MTEntryTitle encode_url="1"$>&amp;url=<$MTEntryPermalink encode_url="1"$>" target="_blank"><img src="http://b.hatena.ne.jp/images/append.gif" alt="はてなブックマークに登録" border="0" /></a><img src="http://b.hatena.ne.jp/entry/image/small/<$MTEntryPermalink$>" alt="" border="0" /> |
<a href="http://del.icio.us/post?v=4;url=<$MTEntryPermalink encode_url="1"$>;title=<$MTEntryTitle encode_url="1"$>" target="_blank"><img src="http://static.delicious.com/img/delicious.med.gif" alt="Deliciousに登録" border="0" height="12" /></a><img src="http://labs.creazy.net/sbm/delicious/textimg/<$MTEntryPermalink$>" border="0"> |
<a href="http://clip.livedoor.com/clip/add?link=<$MTEntryPermalink encode_url="1"$>&amp;title=<$MTEntryTitle encode_url="1"$>" target="_blank"><img src="http://clip.livedoor.com/img/bnr/16_12_white.gif" alt="livedoor clipに登録" border="0" /></a><img src="http://image.clip.livedoor.com/counter<$MTEntryPermalink$>" border="0">
</p>]]>
</description>
<link><$MTEntryPermalink encode_xml="1"$></link>
<guid><$MTEntryPermalink encode_xml="1"$></guid>
<category><$MTEntryCategory remove_html="1" encode_xml="1"$></category>
<pubDate><$MTEntryDate format_name="rfc822"$></pubDate>
</item>
</MTEntries>
</channel>
</rss>

いままでは、index.xmlとして出力していたのですが、Feedburnerにまとめるために専用のファイル名で出力しました。

Feedの構文チェック

文法的に正しいか確認するために下記サービスを利用しました。
RSS Validator – feedAnalyzer RSSの構文チェック
文法に関しては問題なかったのですが、HTTPヘッダーの指定(というか指定してないんだけど)がまずいと怒られました。
サーバーの "charset" と フィードの "encode" を一致させることをお薦めします
なので、言われるままに .htaccess に下記1行を追加して、XMLファイルはUTF-8で読まれるように設定しました。

AddType "application/xml; charset=UTF-8" xml rdf

修正後再チェックしたところ、完全にValidなFeedである事が確認できました。

フィルタリングしたFeedを作成

ベースのFeedは完成したので、それを元にフィリタリングしたFeedも作ります。
MTなので、テンプレートを新規追加して「テンプレートの内容」には、まずベースのFeedのコードを貼付けます。
その後で、フィルタリング用にMTEntriesタグを下記のように書き換え
▼プライベートパックの場合

<MTEntries lastn="20" include_subcategories="1" category="blog OR camera OR foto OR gadget OR info OR mini OR review">

▼テクノロジーパックの場合

<MTEntries lastn="20" include_subcategories="1" category="info OR product OR tech OR tips">

category属性に表示するカテゴリーをORでつなげて指定するだけです。サブカテゴリーも使っているので、include_subcategories="1" を指定してcategory属性には親カテゴリーだけを書いています。

各FeedをFeedburnerに登録

Feedburnerでは1アカウントで複数のFeedの管理もできるので、2種類増えたFeedも登録しました。
そうするとFeedburnerドメインのRSS用URLが発行されますので、各テンプレートのHEADタグ内にオートディスカバリー用のタグを埋め込んでいきます。

<link rel="alternate" type="application/rss+xml" title="RSS2.0 全てのエントリー" href="http://feeds2.feedburner.com/creazyrss" />
<link rel="alternate" type="application/rss+xml" title="RSS2.0 プライベートパック" href="http://feeds2.feedburner.com/creazynet_private" />
<link rel="alternate" type="application/rss+xml" title="RSS2.0 テクノロジーパック" href="http://feeds2.feedburner.com/creazynet_tech" />

こうしておけばFirefoxなどのブラウザでアクセスした場合にブラウザがFeedを認識するようになります。
RSSオートディスカバリー

まとめ

自分がlivedoor Readerを使っているのでそこだけしかチェックしてないですけど、このエントリーを書いている時点で181人が購読してくださっているようです。いつもありがとうございます。
これからも、一人でも多くの人に役立つ情報を提供できるように頑張ります!

-Renewal2009, 小技集

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

Googleドキュメントのフォーム機能からGoogle Apps Scriptを使ってメール送信

【2014/12/26:追記】 この記事はGoogleの仕様変更などで内容が古くなっていたため、最新の情報で書き換えました。 リンク先の記事を参照してください。 Googleドライブのフォーム機能から …

no image

第14回:JaikuのJavaScript BadgeをJSONから作ってみる

JaikuがGoogleに買収されるという事でにぎわっていますね。 Googleは、フィンランドのヘルシンキを拠点とするモバイルソーシャルネットワーキングプロバイダJaikuを買収する。Jaikuは、 …

no image

PhotumblrでTumblrの画像をブログパーツにしてみる

だいぶ前にTumblrの画像を抜き出すPipesを作ったんだけど、今日はそれを使ってブログパーツを作ってみます。 元ネタはこちらのエントリーをお読みください。(で、省略w) ・「Photumblr」T …

Safariでページを大回転させるブックマークレット

Safari限定ですが、WebKit transformationを使ってページの表示角度を変えられるんだそうです。 Ajaxianに出てた。Safariブラウザだけの機能。 -webkit-tran …

no image

動画を楽しもう!(YoutubeをMP4でダウンロードするもっと簡単なブックマークレット)

YoutubeをMP4の高画質で見れる方法がある事が分かり、Google Operating SystemではすでにMP4形式でダウンロードできるブックマークレットが紹介されています。 One way …

スポンサードリンク

スポンサードリンク