[MT]カテゴリ別にRSSを配信するには?

うちのブログは、いろんなジャンルを扱っています。特に映画とかアニメとかプログラムとか全く関係のないジャンルが雑然と書かれているわけです。そういうわけで、RSSでこのブログの更新をチェックしている方も多少はいらっしゃるかと思いますが、チェックしたときに全く興味のないジャンルの話だった時はガッカリですよね。そういうわけで、ジャンル事にもRSSを配信しようと思ったわけですが、ちょっとやり方がわからないので、今から調べますw。

とりあえず、Movable Type(以降MT)のダッシュボードでテンプレートとか、ウィジェットを覗いています。「最新記事のフィード」のテンプレートを複製して作れそうな気がしなくもないです。

XG001320

MTEntries | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/entries.html

 

と思ったが、アーカイブテンプレートの「カテゴリ別ブログ記事リスト」を複製して、インデックステンプレートの「最新記事のフィード」を参考にしながら、ダイナミックに生成するようにすれば一個ですべてのカテゴリに対応したRSSが作成できそうな気がする。

XG001321

で、実際にやってみた。で、結論から言うとうまくいったので、手順を以下に記述します。

ちなみに、このブログはphp5+SQLite3を使ったダイナミックパブリッシングの構成なのであらかじめご了承ください。基本的にはスタティックでも同じのはずです。


  1. とりあえず、インデックステンプレートの「最新記事のフィード」をクリックして編集画面に入る。
    XG001334

  2. 編集画面に入ったら、全部選択してコピーしてメモ帳にでも貼り付けておく。あとで使うためです。
    XG001335
    コピーしたタグをこんな風にメモ帳に貼り付けて取っておきます。あとで使います。
     XG001336
    メモ帳に貼り付けたらとりあえず前の画面であるテンプレートの画面に戻ります。

  3. アーカイブテンプレートの「カテゴリ別ブログ記事リスト」を複製。
    カテゴリ別記事リストにチェック>テンプレートの複製を選択>Goをクリック。
    XG001322

  4. テンプレートが複製されたところ。
    リストに「カテゴリ別ブログ記事リストのコピー」が追加されました。
     XG001323

  5. 複製されたテンプレートをクリックして編集画面にします。
    リストの「カテゴリ別ブログ記事リストのコピー」をクリックすると編集画面になります。
    そこで、テンプレート名を解りやすいものに変更します。

    「カテゴリ別ブログ記事リストのコピー」>「カテゴリ別RSS」
     XG001324

    XG001325

  6. 複製したテンプレートの編集エリアに最初から書いてある内容をクリアして、
    XG001337
    先ほど、メモ帳にコピーしておいた内容を張り付ける。
    XG001338

    頭の方の下記の二行をカテゴリに対応できるように修正する。

  7. <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" />

    結果下の様になる。
    XG001350


  8. テンプレートの設定を行う。
    テンプレートの編集画面の下の方を見ると下の画像の様になっています。
    赤枠で囲ったところをクリックするとテンプレートの設定が開きます。
    XG001326
    開いたら今度は、「新しいアーカイブマッピングを作成」をクリック
    XG001327 
    アーカイブマッピングの種類の選択画面になるので
    XG001328
    種類「カテゴリ」を選択して[追加]をクリック。
    XG001329
    で、アーカイブマッピングの追加が完了したところ。
    XG001330
    次に、パスで「カスタム」を選択、公開を「ダイナミック」を選択
    XG001331b
    パスで「カスタム」を選択すると、パスのところがテキストボックスになるので、内容を「%c/atom.xml」に修正する。
    XG001332b
    ここまで完了したら、[保存]をクリックして保存する。
    XG001339b

  9. RSSウィジェットを適当に変更する。
    ダッシュボード>デザイン>ウィジェットで、RSSのウィジェットを適当に修正する。
    こんな感じになってたとしてXG001346
    下のようなコードを追加した。
    <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>

    結果としてこんな感じになっています。
    XG001351 
    これで保存します。


  10. 実際にブラウザでアクセスして確認してみる。ここでのブラウザはFirefox 3.0.10です。
    このブログの、右にあるカテゴリリストから、とりあえずファイヤーウォールを選んでみる。
    XG001347b 
    ファイヤーウォールのカテゴリの中の記事は3個、カテゴリの中に入ると、右のRSSの欄に「このカテゴリ専用RSSを購読する」のリンクがあります。これをクリックしてみます。
    XG001348
    下のような表示になりました。うまく、RSSとして機能しているようです。
    XG001349

    一応ソースも確認してみると下記の様になっていてちゃんとrssのパスなども問題なさそうです。

  11.  

    <?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="http://blog.kumacchi.com/cat46/cat47/cat58/" />
        <link rel="self" type="application/atom+xml" href="http://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配信が可能になりました。

タグ : , ,