My blosxom plugins
というわけで (何)、しばらくは blosxom ネタ強化期間として、まずは blosxomer (謎) のお約束である私の使っているプラグイン大公開を行ってみます。
今回の更新で、使用プラグインの構成は下記のようになりました。
- absolute
- エントリ中のリンクや
img要素が相対パスで記述されている場合に、絶対パスに変換して表示。今回から導入したのだけど、typo によるリンク ミスも入力の手間も減っていい感じ。設定書き換えのついでにuse strictで動作するよう変更。 - anyencoding
- このウェブログは互換性と管理の都合でエントリ作成と HTML の出力を Shift_JIS で行っているのですが、フィードの場合は UTF-8 に変換するため使用。導入当初の以前のバージョンは環境の違いで動かなくてはまった…。
- archives
- 年および月ごとのページへのリンク一覧を表示。基本ですね。以前は Movable Type のデフォルトっぽく表示される flatarchives を使っていたのですが、何から何まで MT のまねというのもどうかと思ったのでこちらに変更、今度はいかにも blosxom な見た目に。年月日ごとの閲覧時にパンくずリストを出力できるよう改造し、
use strict動作に変更。さらに後述の categories プラグイン同様リンクの後にエントリの件数を表示するかどうか選択できるようにした…が、非表示にすると見た目がいまいちだったのでデフォルトの表示する設定に。更新さぼった月が一目でわかるorz atomfeedAtom フィードを出力するため今回導入。Atom 0.3 を出力するオリジナルをベースに、その改良版を参考にしてuse strictで Atom 1.0 を出力するよう改造。content要素は出力しないので XML::Parser 使う部分はばっさり削除。フレーバーは内蔵のを書き換えたハード コーディングで使用中とかいうひどい仕様 (w- back_and_forth
- エントリ個別のページに、前後のエントリへのリンクを表示。MT でおなじみの機能ですね。
- categories
- categories プラグインの改造版。さらに改造してパンくずリストを出力するようにした。category_set を使えばいいのに車輪の再発明したのは気にしない。
- date_fullname
- Apr や Wed のような短縮形ではなく、April や Wednesday のような完全な日付表記を date.flavour で表示可能にする (参照: date_fullname プラグイン)。head.flavour に
$date_fullname::path_info_moと書くと、同様に月または日ごとの閲覧時に表示できるよう改造し、use strict動作に。 - date_title
- head.flavour の
title要素に年月日を追加。 - entries_kache
- entries_cache の改造版 (参照: entries_kache プラグイン)。W3CDTF イイ! (・∀・)
- entry_title
- head.flavour の
title要素にエントリのタイトルを追加。 - excerpt
- RSS の
description要素および Atom のsummary要素に使用するエントリの要約を作成。仕様を考えると、エントリの最初に現れるピリオド (.)/感嘆符 (!)/疑問符 (?) までを取り出す foreshortened よりも、こちらのほうが日本語を含む多言語に向いていると思います。 - gentime
- ページ生成にかかった時間を出力。お遊びです。サーバー負荷率と混雑度の目安でもありますが。
- interpolate_fancy
- エントリ個別のページと、そうでない場合の表示切り替えなどに使用。条件指定に正規表現を使うので、ある程度プログラムの知識がないと使用は難しい (日本語資料)。実は私もプラグイン内部の挙動は理解してなかったり…。
- lamitap
- Last-modified ヘッダーを出力。今までは last_modified を使っていたのですが、フレーバーやプラグインを変更した場合や、フィードの更新時刻も出力したかったので、こちらに変更。
- list_title_at_month
- 月ごとの閲覧の場合に、タイトルのみを並べて表示。月ごとのページのみ古いエントリが上だと訪問者をとまどわせると思うので、
$files_ref->{$b} <=> $files_ref->{$a}をひっくり返し、他のページ同様新しいエントリを上に変更…というか、フレーバーがハード コーディングって…orz - list_title_at_year
- 年ごとの閲覧の場合に、タイトルのみを並べて表示。list_title_at_month と全く同じ部分をそれぞれ変更。
- notfound
- 存在しないページを要求された場合に、404 Not Found を出力。運用上ないと困るプラグイン。
- paginate_simple
- カテゴリごとの閲覧時に、前後のページへのナビゲーションを提供。同じ目的では paging のほうがメジャーなんですが、これはフレーバーで外見を変えられないし、他のプラグインとの相性も出そうだし、何より自身のサイトのデザインにそぐわないので paginate_simple を選びました。paging 同様、2 ページ目以降の場合に
$paginate_simple::meta_robotsにロボット除外meta要素を出力するよう改造。 - ping_weblogs_com_xmlrpc
- Weblogs.com などに更新 ping を送信。今回から導入。環境的ハードルから動かない人続出で、なかなか大変らしい。61 行目を
print TOUCH, time;と typo しているコンマを消すのはデフォルトらしい。らしいらしい。 - rss_date
- RSS 1.0 の
channel要素のdc:dateと RSS 2.0 のlastBuildDate要素を出力するため、今回自作したしょぼいプラグイン。RSS 1.0 だけなら下記の rss10 プラグインをごりごり書き換えてもよかったのですが、汎用性を考え新規に作りました。 rss10RSS 1.0 の出力に必要。blosxom starter kit 付属のを参考に一部を改造。use strict動作に変更。- rwbc
- 最近のコメントおよびトラックバックを表示。まだ公開されてさほど経過していない新しいプラグイン。最近の writeback を RSS で取得できるのが超便利。下記 writeback プラグインの __mode=rss と相性が出るので、
REQUEST_METHOD が POST の場合のみQUERY_STRING が __mode=rss を含まなければキャッシュ追加動作するよう変更。 - url_hash
- エントリの URI に対する MD5 ハッシュ値を出力。ソーシャル ブックマークにエントリを追加するリンクに使用。
- writeback
- コメントやトラックバックを受け付け。この改造版の挙動を理解するのは本当に苦労した…で、さらに改造を加えた上で
use strict動作に。これまた使っている変数が多くて苦労した…隠し機能 (というわけでもないが) の __mode=rss とかも殺さず残し、entries_kache と併用してもdescription要素を正しく出力できるよう改良してありますが、あまり意味はない気がします。 - xhtml2html
- 私のサイトでは HTTP_ACCEPT の内容に応じて XHTML を application/xhtml+xml または text/html でサーブしているので、これを blosxom でも同様に行うために使用。
…こうやってリスト アップしてみると、我ながらすごい数のプラグインですね。しかも kyo さんと北村さんのところからいただいてきたのばかり…あうぅ、もうお二人には足を向けて寝られません。本当感謝してます! まあ 9 割方私の手による怪しい改造が入っているわけですが。
ちなみに見ての通り、上記のリストで挙動がよくわからない interpolate_fancy 以外はすべて use strict してあるわけですが、これは将来的に mod_perl + ModBlosxom + ModBlosxom::plugin::_compat という構成に移行する可能性を想定してのことだったりします…が、環境的ハードルから移行可能性は低いと思います。今のところ。
あと、このエントリとあんまり関係ないのですが、この blog を何を狂ったか all about blosxom に追加してしまいました! それから、意味もなくはてなポイントも受け取れるようにしてみました。
そういえば、はてなも mod_perl で動いているらしいです。今日初めて知りました…。
補足 @ May 8, 2007
FeedBurner への移行により RSS 1.0 および Atom の出力を中止したため、関連プラグインは外しました。その他の変更に関して「サイトと blog をメンテ」もご参照ください。
補足 @ Sep 29, 2007
SBM 対応に伴い、url_hash を追加。
- Posted at 23:36:59 in blosxom
- Comments (0) | TrackBacks (0)
