COREBlog で運用している当サイトの RSS (1.0のほう) は、以下のようにいくつかの修正が施されている。
- COREBlog のメーリングリストで紹介されているように、<dc:date>にタイムゾーンを付加した。
- ロゴ画像を指定した。
- 各記事に <dc:subject> を付け、カテゴリが分かるようにした。
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 の管理画面...
新しいコメントの投稿