RSSのテンプレートを修正する

COREBlog で運用している当サイトの RSS (1.0のほう) は、以下のようにいくつかの修正が施されている。

  1. COREBlog のメーリングリストで紹介されているように、<dc:date>にタイムゾーンを付加した。
  2. ロゴ画像を指定した。
  3. 各記事に <dc:subject> を付け、カテゴリが分かるようにした。
  4. Last-Modified ヘッダを返すようにした

3つめの修正により、SharpReader でカテゴリが表示されるようになった。4つめの修正では、HEADリクエストで、Blogの更新状況を取得するような RSS リーダーに役立っている。

修正内容

RSS の構造を最初に理解した上で、変更作業をしていただきたい。
詳しくは、RSS 1.0全要素のツリー[The Web KANZAKI] を参照のこと。

dc:date 要素のタイムゾーン

dc:date要素を以下のように修正する。(修正個所は2箇所ある。)

<dc:date><dtml-var date_created fmt="%Y-%m-%dT%H:%M:%S+09:00"></dc:date>

ロゴ画像の指定

channel 要素に、image 要素を追加する。

<image rdf:resource="<dtml-var blogurl>/images/blog_logo.png" />

以下のコードを追加する。(image 要素を追加するのは、channel要素の外にすること。)

<image rdf:about="<dtml-var blogurl>/images/blog_logo.png">
  <title><dtml-var title></title>
  <link><dtml-var blogurl></link>
  <url><dtml-var blogurl>/images/blog_logo.png</url>
</image>

各記事のカテゴリ

item 要素にある、dc:subject 要素を以下のように変更する。

<dtml-in entry_category_list><dc:subject><dtml-var name></dc:subject></dtml-in>

Last-Modified ヘッダを返すように修正

Content-type ヘッダを返す部分の直後(改行してはならない)に以下のコードを追加する。

<dtml-call "RESPONSE.setHeader('Last-Modified', bobobase_modification_time().toZone('GMT').strftime('%a, %d %b %Y %H:%M:%S GMT'))">

この修正に関しては、HEAD リクエストで Last-Modifiedに書いた方法と組み合わせないと、HEADリクエストで意味の無い Last-Modified ヘッダを返すようになる。

Re: RSSのテンプレートを修正する

どうせなら、If-Modified-Since ヘッダにも対応したい。
どうやら、SharpReader は、If-Modified-Since を付けて GET してきているようだ。

Re: RSSのテンプレートを修正する

もう一点。
content:encoded 要素も追加してみたのだが、例えば、imgファイルなんかは絶対URL(というんだっけ?)で指定しないと表示されない。この部分は rdf10_xml を呼び出す際に変換をかけたいのだが、やり方がわからなかった。

RSS リーダに画像を見せるには - Trackback

COREBlog の ML
で、RSSリーダに画像を見せたいという内容の投稿がありましたので、(完成しているものではありませんが)私のやり方をご紹介したいと思います。コンテンツ配信という考え方で、HTMLをそのまま
RSS に貼り付けてやると
RSSリーダーにも表示されると言う事のようです。
最初にお断りしておきますが、画像の URL を 完全な URL
にしないといけません。これは
RSSの性質上必要な事なのですが、自動で置き換える術を思いつきませんでした。
手順 COREBlog の管理画面...

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • HTMLタグは使用できません
  • 行と段落は自動的に折り返されます。

書式オプションに関するより詳しい情報...

CAPTCHA
この質問はあなたが人間であるかどうかについて調べる為と、自動化したスパムを防ぐ為のものです。うまくいかない場合は電子メールでお問い合わせ下さい。
イメージ CAPTCHA
画像の中に見える文字を入力して下さい