Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



whatnew-list.rbとimage.rb/image_ex.rbの相性問題

2005年08月26日 22:40更新 筆者:K.Ktouth

tDiary+blogkitの構成で、image/image_exプラグインを使用していると、RSSファイルに出力されるimgタグが意図したものにならない模様。

未修整image.rbだとエラー、image_ex.rbだと最新の更新エントリの日付で全imgタグが生成されてしまう。

問題点

tDiary+blogkitの構成の場合、RSS1.0ファイルは、blogkit同梱のwhatnew-list.rbを使用して生成しているわけが、どーやらimage.rb、image_ex.rbと相性が悪い模様。

whatnew-list.rbのソースをチェックしてみると、各エントリの本文にプラグインタグを適用するタイミングに問題があることが判明。

whatnew-list.rbではプラグイン適用タイミングは「未摘要の本文を使ってRSSファイルの原型を生成、その後プラグインを適用する」形を取っているため、imageプラグインのように各エントリ固有のインスタンス変数を参照するタイプのプラグインがうまく動作しない……ということらしい。

そのため、生成されたRSSファイルはimage/image_exプラグイン摘要でエラーを起こすか、同じ日付のタグが生成されることになる。

回避手段

whatnew-list.rbのwhatsnew_list_rdfメソッドに以下の修正を加える。150行目付近

    mod = modify
    end
+   xml << "<% @image_date = \"#{uri}\"; @image_year = \"#{uri.scan(/(\d{4})(\d\d)(\d\d)/)[0][0]}\" %>"
    xml << %Q[<item rdf:about="#{path}#{anchor uri}">
    <title>#{title}</title>

これで、各エントリ部分に入る直前にimage/image_exプラグインが必要な変数を設定するようになる。
これはimage/image_exプラグインに対してだけの対応だが、必要に応じてそれなりのコードを追加することでOKだろう。

本日のリンク元
その他のリンク元
検索