カテゴリ単位での閲覧の時に、title
要素やh2
要素にそのカテゴリの名前を潜り込ませることが出来るように、category_titleというプラグインを作りました。月単位での閲覧の時は、list_title_at_monthで実装してるので、カテゴリ単位での閲覧の時にも実装しないのは片手落ちかなとか突然思い至ったので。
blosxomカテゴリにアクセスすると、title
要素やh2
要素にblosxomという文字列が追加されてるのを見て
ソースは短いので直接書いてみる。
package category_title;
use strict;
use vars qw($title);
sub start {
if (!$blosxom::path_info or $blosxom::path_info_yr or ($blosxom::path_info =~ m|.*?/?\w+\.\w+$|)) {
return 0;
}
return 1;
}
sub head {
$title = " - $blosxom::path_info";
return 1;
}
1;
flavourに書くのは$category_title::titleになります。仕組みは、start
で$blosxom::path_info
あたりをチェックし、カテゴリ単位での閲覧である場合はプラグインを実行してやり、$title
という変数に$blosxom::path_info
をぶち込んでやると。if文は3つの条件で判断しています。最初の条件は「$blosxom::path_info
があるかどうか」で、これによってトップ・ページにアクセスした場合を弾きます。2番目の条件は「$blosxom::path_info_yr
があるかどうか」で、これによって年・月・日単位での閲覧の場合を弾きます。最後の条件は「$blosxom::path_info
にピリオドが含まれているかどうか」で、これによってエントリ単位での閲覧(このサイトの場合はPramanent linkに使用している)を弾きます。最後の条件がかなり適当なので、ピリオドのあるカテゴリを作ってたりすると、そのカテゴリでは表示されないとか言う不具合がありますが、気にしない。
このサイトではまだサブカテゴリを使ってないので、これだけにしてありますが、サブカテゴリの区切り文字を任意のものに変えたい場合は、head
を、
sub head {
my $sep = "区切りに使う任意の文字列";
$title = "$blosxom::path_info";
$title =~ s!/!$sep!g;
$title = $sep . $title;
return 1;
}
こんな感じでいいと思います。試してないので知りませんが(ぉ。