[MT]カテゴリ別にRSSを配信するには?
うちのブログは、いろんなジャンルを扱っています。特に映画とかアニメとかプログラムとか全く関係のないジャンルが雑然と書かれているわけです。そういうわけで、RSSでこのブログの更新をチェックしている方も多少はいらっしゃるかと思いますが、チェックしたときに全く興味のないジャンルの話だった時はガッカリですよね。そういうわけで、ジャンル事にもRSSを配信しようと思ったわけですが、ちょっとやり方がわからないので、今から調べますw。
とりあえず、Movable Type(以降MT)のダッシュボードでテンプレートとか、ウィジェットを覗いています。「最新記事のフィード」のテンプレートを複製して作れそうな気がしなくもないです。
MTEntries | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/entries.html
と思ったが、アーカイブテンプレートの「カテゴリ別ブログ記事リスト」を複製して、インデックステンプレートの「最新記事のフィード」を参考にしながら、ダイナミックに生成するようにすれば一個ですべてのカテゴリに対応したRSSが作成できそうな気がする。
で、実際にやってみた。で、結論から言うとうまくいったので、手順を以下に記述します。
ちなみに、このブログはphp5+SQLite3を使ったダイナミックパブリッシングの構成なのであらかじめご了承ください。基本的にはスタティックでも同じのはずです。
- とりあえず、インデックステンプレートの「最新記事のフィード」をクリックして編集画面に入る。
- 編集画面に入ったら、全部選択してコピーしてメモ帳にでも貼り付けておく。あとで使うためです。
コピーしたタグをこんな風にメモ帳に貼り付けて取っておきます。あとで使います。
メモ帳に貼り付けたらとりあえず前の画面であるテンプレートの画面に戻ります。 - アーカイブテンプレートの「カテゴリ別ブログ記事リスト」を複製。
カテゴリ別記事リストにチェック>テンプレートの複製を選択>Goをクリック。
- テンプレートが複製されたところ。
リストに「カテゴリ別ブログ記事リストのコピー」が追加されました。
- 複製されたテンプレートをクリックして編集画面にします。
リストの「カテゴリ別ブログ記事リストのコピー」をクリックすると編集画面になります。
そこで、テンプレート名を解りやすいものに変更します。「カテゴリ別ブログ記事リストのコピー」>「カテゴリ別RSS」
- 複製したテンプレートの編集エリアに最初から書いてある内容をクリアして、
先ほど、メモ帳にコピーしておいた内容を張り付ける。
頭の方の下記の二行をカテゴリに対応できるように修正する。
- テンプレートの設定を行う。
テンプレートの編集画面の下の方を見ると下の画像の様になっています。
赤枠で囲ったところをクリックするとテンプレートの設定が開きます。
開いたら今度は、「新しいアーカイブマッピングを作成」をクリック
アーカイブマッピングの種類の選択画面になるので
種類「カテゴリ」を選択して[追加]をクリック。
で、アーカイブマッピングの追加が完了したところ。
次に、パスで「カスタム」を選択、公開を「ダイナミック」を選択
パスで「カスタム」を選択すると、パスのところがテキストボックスになるので、内容を「%c/atom.xml」に修正する。
ここまで完了したら、[保存]をクリックして保存する。
- RSSウィジェットを適当に変更する。
ダッシュボード>デザイン>ウィジェットで、RSSのウィジェットを適当に修正する。
こんな感じになってたとして
下のようなコードを追加した。
<mt:If name=”category_archive”>~</mt:If>
は、カテゴリーアーカイブの時だけ表示するためのおまじないです。
<mt:If name="category_archive">
<div class="widget-content"><a href="<$mt:ArchiveLink$>atom.xml" rel="alternate" type="application/rss+xml">このカテゴリ専用RSSを購読する</a></div>
</mt:If> - 実際にブラウザでアクセスして確認してみる。ここでのブラウザはFirefox 3.0.10です。
このブログの、右にあるカテゴリリストから、とりあえずファイヤーウォールを選んでみる。
ファイヤーウォールのカテゴリの中の記事は3個、カテゴリの中に入ると、右のRSSの欄に「このカテゴリ専用RSSを購読する」のリンクがあります。これをクリックしてみます。
下のような表示になりました。うまく、RSSとして機能しているようです。
一応ソースも確認してみると下記の様になっていてちゃんとrssのパスなども問題なさそうです。
<link rel="alternate" type="text/html" href="<$mt:BlogURL encode_xml="1"$>" />
<link rel="self" type="application/atom+xml" href="<$mt:Link template="feed_recent"$>" />
具体的には下記の様に書き換えた。
<link rel="alternate" type="text/html" href="<$mt:ArchiveLink$>" />
<link rel="self" type="application/atom+xml" href="<$mt:ArchiveLink$>atom.xml" />
結果下の様になる。
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>KUMA TYPE</title>
<link rel="alternate" type="text/html" href="https://blog.kumacchi.com/cat46/cat47/cat58/" />
<link rel="self" type="application/atom+xml" href="https://blog.kumacchi.com/cat46/cat47/cat58/atom.xml" />
<id>tag:blog.kumacchi.com,2008-08-24://1</id>
<updated>2009-03-10T02:54:02Z</updated>
<subtitle>パソコン、インターネット、動画、アニメ、映画、食べ物、プログラム、ゲーム、時事などなど広く浅くやりすぎてまとまりのないブログ。</subtitle>
<generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.24-ja</generator>
(以下略)
他のカテゴリも確認してみましたがとりあえず大丈夫そうです。かなり適当ですが、なんとか、カテゴリ毎のRSS配信が可能になりました。
タグ : MovableType, MT, RSS