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

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

関連記事

no image

Deliciousでサイト内ブックマーク数の合計を取得するPHPサンプル

はてなブックマークにはサイト内のブックマーク数合計を表示してくれるはてブカウンターというのがあります。他のSBMには無い機能ですが、サイトの人気度を示す良い指標だと思っています。 参考:はてブ数100 …

no image

第15回:見ているページをAnother HTML-lintで文法チェックするブックマークレット

サイトを作ったら、見た目の確認も重要ですがマークアップの文法チェックも重要です。別にW3C信者という訳ではありませんがSEOの面でもstrictなHTMLの方が良さそうなのでできる限り対応した方が良い …

no image

第13回:URLエンコードとURLデコードを簡単にするブックマークレット

URLエンコードとURLデコードって頻繁には使わないけど、いざ使う時は適当にGoogleで検索して出てきた変換サイトを使っていたりしました。 この辺とか、 URLエンコードとデコードが行えるフォームで …

Raspberry Pi 4 Model B 8GBでライブ配信(1) USB接続のWEBカメラ映像をFFmpegで保存してみる

ブログご無沙汰しております。ヤガーです。 本業のWEB開発と並行して、リモートワーク推奨の影響でライブ配信などの需要が高まっており、以前よりイベントなどで配信をしていた関係で様々な形式でのライブ配信方 …

4マイク+5ヘッドフォンの音声収録機材

完全に自分用の備忘録ですが・・・(汗) Ustreamなどインターネットを使った動画生配信を何度か実施していて、地方からリアルタイムコンテンツを発信する良い媒体だと思っているので、少しずつでもできるこ …

スポンサードリンク

スポンサードリンク