rss_date プラグイン
以前にしばらくは blosxom ネタ強化期間として
エントリを書いていくような発言をしたのに、相も変わらず有言未実行。あまりのオオカミ少年ぶりに、そろそろ blosxomer としての信用を失うなと感じつつも、どうせ誰も期待してねーよ! とも思ったり。まあそれはともかく、このウェブログで使用している blosxom プラグインの見直しに伴い、新たに自作した rss_date を今さらながら公開しました。
このプラグインを使用すると、RSS 1.0 の channel 要素の dc:date や、RSS 2.0 のlastBuildDate 要素などで使用可能な、ページの最終更新日を W3CDTF および RFC 822 形式で出力できます。これらはフレーバーだけでは生成できないので、このような代物を自作したというわけです。
さらに、標準のフレーバー コンポーネントではエントリ日時を分単位までしか出力できませんが、それってフィードとしてどうなのよ? という点も以前から気になっていたので、エントリが投稿された秒を提供するストーリー コンポーネントも出力するようにしました。
…と、能書きを連ねてみましたが、やはり具体的な使用例を見ないとわかりにくいと思うので、以下は実際の使い方を記述します。
最初に rss_date 本体ですが、これは特に設定を書き換える必要はないと思います。ご自分の blosxom のプラグイン ディレクトリにそのまま放り込めば OK です。
次にフレーバーへの記述ですが、blosxom starter kit 付属の RSS 1.0 フレーバーを例にすると、以下のようになります。
まず head.rss の記述。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xml:lang="$blog_language">
<channel rdf:about="$url/index.rss">
<title>$blog_title</title>
<link>$url</link>
<description>$blog_description</description>
<dc:creator>$rss10::creator (mailto:$rss10::email)</dc:creator>
<dc:date>{{{date_w3c}}}$rss10::tz_offset</dc:date>
<admin:generatorAgent rdf:resource="$rss10::generatorAgent"/>
<admin:errorReportsTo rdf:resource="mailto:$rss10::email"/>
{{{items}}}
</channel>
このように {{{date_w3c}}} と書くと、その場所にページの最終更新日となる W3CDTF を挿入します。RSS 1.0 の場合は channel 要素の下に、UTC からのオフセット値とともに dc:date 要素として追記します。同様に {{{date_rfc}}} と書くと、最終更新日を RFC 822 形式で挿入します。RSS 2.0 の lastBuildDate (または pubDate) 要素には、こちらを利用し <lastBuildDate>{{{date_rfc}}} +0900</lastBuildDate> のように記述します。
次に story.rss。
<item rdf:about="$url$path/$fn.htm">
<title>$rss10::title</title>
<link>$url$path/$fn.htm</link>
<description>$rss10::description</description>
<dc:subject>$categories::alias</dc:subject>
<dc:creator>$rss10::creator (mailto:$rss10::email)</dc:creator>
<dc:date>$yr-$mo_num-$da$rss10::T$ti$rss10::colon$rss_date::sec$rss10::tz_offset</dc:date>
<content:encoded><![CDATA[$body]]></content:encoded>
<trackback:ping rdf:resource="$url$path/$fn.trackback"/>
</item>
上記のように $rss_date::sec と記述すると、その場所にエントリが投稿された秒を出力します。ちなみに $ti は hh:mm 形式でエントリの時間を返す変数。つまり例では $ti$rss10::colon$rss_date::sec ($rss10::colon は「: (コロン)」を出力する rss10 プラグインの変数) と記述していますから、21:15:33 といった hh:mm:ss 形式で時刻が出力されます。
このように rss_date はフィードの日時出力を拡張するためのプラグインですが、たとえば foot.flavour に Last Updated in {{{date_w3c}}}. と記述すれば、よくあるフッターのページ最終更新日表示に使えたりと、RSS 以外にも利用できます。
技術的には別にどうってことはない…というかむしろ至ってシンプルなスクリプトですが、工夫次第で使い方は広がると思うので、活用してください。やはり blosxom は、こうやって手軽にプラグインを作れるのがいいですね。
- Posted at 22:36:54 in blosxom
- Comments (0) | TrackBacks (0)
