blosxomのカスタマイズ#1   2005/05/26 (Thu)  12:02  [blosxom]

本サイトを構成するにあたり、特にCk2 Bloggerさんを参考にさせていただきました。この場を借りてお礼申し上げます。構成もまとまっていて素敵です。

blosxomのカスタマイズ第1弾というわけですが、とりあえずblosxom本体のバグらしきものを対策してみました。
blosxomではディレクトリ単位でエントリを表示することが出来ますが、例えば、/news と /new というディレクトリがある場合、/new でのアクセスは問題ないのですが、/news でアクセスすると /news と /new の両方のエントリが表示されてしまいます。どうやらパスの比較に問題がありそうなので少し調べてみました。

該当箇所はblosxom.cgiの以下の場所。本家blosxom(2.0)だと338行目、blosxom starter kit(1.1.3)だと282行目にあたるようです。上の行のコメントを参考に探せば見つかると思います。

# Only stories in the right hierarchy
$path =~ /^$currentdir/ or $path_file eq "$datadir/$currentdir" or next;

この行を以下のように修正してみました。

# Only stories in the right hierarchy
($path =~ /^$currentdir/ and (!$currentdir or !$' or $' =~ /^\//)) or $path_file eq "$datadir/$currentdir" or next;

こんな感じでうまくいきそうです。要はファイルのパスと変数currentdirを比較した際、一致した後方の文字がどうなっているか判断しているだけです。
なんとなくバグっぽいので本家に取り込まれないかなぁ。

2008/5/13追記。
どちらがいいのかわかりませんが、

# Only stories in the right hierarchy
!$currentdir or $path =~ /^$currentdir(?:\/|$)/ or $path_file eq "$datadir/$currentdir" or next;

と直してやっても良さそうなので変更してみました。

wikieditish message: Ready to edit this entry.