カエルチュウイホウさんのtaggingプラグインというエントリにて指摘されている問題を修正しました。こちらではカテゴリが1階層しかないため、全く気づいていませんでした。ご指摘感謝です。
download: taggingプラグイン
「下の階層のタグが表示されない」という問題については、カエルチュウイホウさんの修正をそのまま反映させて頂いております。
「同じタグが複数表示されてしまう場合がある」という問題については、以下の様にコードを修正しました。
$ diff tagging tagging.20050508
3c3
< # Version: 2005-06-21
---
> # Version: 2005-05-08
50d49
< my %tags;
52,53c51,52
< if($category =~ /$path/){
< foreach my $tag (keys %{$tags_list_per_category->{$category}}){
---
> if($path eq $category){
> foreach my $tag (sort keys %{$tags_list_per_category->{$category
}}){
55c54,56
< $tags{$tag}++;
---
> my $encoded_tag = $tag;
> $encoded_tag =~ s/(\W)/sprintf("%%%02X", ord($1))/ego;
> $list .= "<li><a href='$url?tag=$encoded_tag'>$tag</a> (
$tags_list_per_category->{$category}->{$tag})</li>\n";
60,65d60
<
< foreach my $tag (sort keys %tags){
< my $encoded_tag = $tag;
< $encoded_tag =~ s/(\W)/sprintf("%%%02X", ord($1))/ego;
< $list .= "<li><a href='$url?tag=$encoded_tag'>$tag</a> ($tags{$tag})
</li>\n";
< }
93c88
< foreach (sort keys %$files){
---
> foreach (keys %$files){
各カテゴリのタグの数の算出と、HTMLで表示するリストの生成を一緒のforeachループ内で行っていたのが問題の原因だったので、各カテゴリのタグの数を算出してタグ毎に積算するのと、HTMLリストの生成を分けるようにしました。
こちらで試した限りは意図した通りに動いていますが、どんなもんでしょ?