リニューアルの準備として、前にカテゴリーを整理したんですが、今回は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>»<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"$>&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"$>&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を認識するようになります。
まとめ
自分がlivedoor Readerを使っているのでそこだけしかチェックしてないですけど、このエントリーを書いている時点で181人が購読してくださっているようです。いつもありがとうございます。
これからも、一人でも多くの人に役立つ情報を提供できるように頑張ります!