日記
mm_footer.rbとrss_recent.rb改造版 (15:37)Edit

ちゃんとRuby(とtDiary)のお勉強をしてから真面目に書き直そうかと思ってたんだけど、キビシイ督促(笑)を受けたんで、適当バージョンを公開しておきます。

なかにはrss_recent.rbの改造版と、それに依存したmm_footer.rbがあります。rss_recentは、

  • 引数にテンプレート文字列を渡すことで、出力するHTMLを変更できるようにした
  • RSSのcontent:encoded要素を解釈&保存するようにした(require 'rss/content')
  • RSSの取得(パース)失敗時には古いキャッシュを使うようにした
  • アイテムが0のときは空文字列を返すようにした

という改造を施しています。あとデフォルトのテンプレートを従来のものと変えちゃっているんで、置き換えるとrss_recentの出力が変わってしまいます(どう変わるかというと、ここのサイドバーのような内容になります)。

で、mm_footer.rbは改造版rss_recentを使って、各日付のフッタにその日のMMの内容(content:encoded部のみ)を表示するプラグインです。面倒くさいんでMMのユーザーIDは17行目あたりに、

      mm_user = 1 # your MM id

とかしちゃってるんで、それを自分のIDに書き換えて使ってください。というか本当は、プラグインで設定を編集・保存できるようにしつつ、未設定の場合は表示しないようにすればいいんだけどね。ついでにテンプレートもWebインターフェースで変更できるようにしておけばいいんだけどね。

標準のテンプレートでは、<div class="section"><ul class="mm_footer">なんて感じになってるんで、適当にCSS定義を追加して見た目を変えてください。ul.mm_footer span.url {font-size: 80%; color: silver;}とかしておくと、ここの表示みたいな感じでURL文字列が目立たなくなります。

ところでテンプレートに埋め込んだ文字列変数を再評価するのにevalを使っているんだけど、もっと安全な方法ってないのかな? それともsecureの設定で使用できる命令とかが絞られて自動的に安全になる? というかもしかしたらsecure関連の設定によっては、このコードはそのままじゃ動かないかも?

あ、あとcontent:encodedをCGI.escapeHTMLしないで出力してますけど、その場合content:encodedに攻撃コードを入れられることによって、tDiaryをおいているドメインに対して攻撃を受ける危険性があります。一応そういうリスクを念頭に置いた上でご利用ください。

Published At2005-02-01 00:00Updated At2005-02-01 00:00