Blosxom Plugin : tagging

前のエントリ 改造済みtaggingを書き直し中。 で書き直していると言っていたtaggingですが、完成しました。なので公開しますというエントリ。

はっきり言って、長い。

追記 ([2009-02-10 T17:35:00+09:00)]

もう作ってから二年以上も経ってますが、このtaggingは僕がPerl初心者の頃に作った代物なので、わけの分からないことをしている部分があったり、おかしな処理をしている所があるので、今現在使用する事はオススメできません。

blosxomでtaggingするプラグインに関しては、mizzyさんのオリジナルか、海外の方が作られたtaggingを使うことをオススメします。

あと微妙に書き直してたりもするんですが、現在放置中なため、完成の目処は立っていません。まあ書き直し版については完成したときにcoderepos辺りで公開しようと考えていますが、あんまりアテにしないでください><

これは何か

  • mizzy さんが作られた Blosxom のプラグイン tagging の開発を引き継ぎ、色々と機能を追加したものです。

主な機能

このtaggingの主な機能は

  • エントリのタグ付け(tagging機能)
  • タグベースのマルチカテゴリ機能(タグバンドル機能)
  • すでにあるディレクトリベースのカテゴリをタグとみなす機能
  • タグクラウド/各種リストの生成

です。

ダウンロード

ダウンロードは以下からできます。ファイル名にバージョン番号がついているので、ダウンロードしたらファイル名を tagging に変更してください。

Download : tagging

導入

taggingプラグイン(以下tagging)を使うには _ meta プラグインが必要です_ 。metaプラグインを導入していない方はmetaプラグインを導入してください。

はじめてtaggingを導入する という方はそのまま $blosxom::plugin_dir 以下に配置すれば使えます。

現在mizzyさんのtaggingを導入している という場合、そのまま入れ替えるだけで動作はします。ただ _ flavourで使える変数名を一部変更している_ ため、そのままだと表示されないものが出てきます。正確には $tagging::list$tagging::tag_list になります。

あと出力も一部変更しているので、そのあたりも注意が必要です。

設定

設定は以下の9項目です。

$meta_prefix

metaプラグインの$meta_prefixと同じ値の設定します。同じ値にしないとうまく動きません。

$charset

xmlHttpRequest から利用する際の文字コードを指定します。Ajax関連の設定なので利用しない方はエントリの文字コードを指定しておくといいかもしれません。

$xhtml_or_html

各種リストを生成する際、XHTMLで出力するかHTMLで出力するかの設定です。1 ならXHTMLで、 0 ならHTMLで出力されます。

$aliases

カテゴリの別名を設定します。以下はサンプルです。

my $aliases         = {
'blosxom'       => 'Blosxom'       ,
'coding'        => 'Coding'        ,
'internet'      => 'Internet'      ,
'miscellaneous' => 'Miscellaneous' ,
'software'      => 'Software'      ,
'webdesign'     => 'Web Design'    ,
'others'        => 'Others'        ,
};

$tag_bundles

タグがどのカテゴリに属するかを指定します。 blosxom というカテゴリでアクセスしたときに、 blosxom , flavour というタグをつけられたエントリを表示したい場合、

# 半角シャープで始まる行はコメントです。
my $tag_bundles = {
# カテゴリ名 : blosxom
'blosxom' => [
'blosxom', # タグ : blosxom
'flavour', # タグ : flavour
],
};

と指定します。

若干分かりにくいですが、以下の例のように指定してください。タグは複数のカテゴリに属することができます。なお、ここでタグがどのカテゴリに属するか指定しないと、自動的に others と言うカテゴリに属することになります。

my $tag_bundles = {
# blosxomに属するタグ
'blosxom'       =>  [
'blosxom' ,
'flavour' ,
],
# codingに属するタグ
'coding'        =>  [
'html',
'rss',
'css',
'javascript',
'perl',
],
};

$tag_bundles $tags2files_file $files2tags_file $categories2tagslist_file

各キャッシュファイルのファイル名を設定します。ほとんどの場合、そのままで大丈夫です。

タグの指定/追加と削除

タグの指定

エントリのタグを指定するには、エントリファイルで

エントリのタイトル
meta-tags: blosxom,flavour,html,css
エントリの本文
エントリの本文
エントリの本文
エントリの本文

上記の

meta-tags: blosxom,flavour,html,css

のようにタグを指定します。上記の場合 blosxom , flavour , html , css というタグが設定されます。

また、すでにあるディレクトリベースのカテゴリをタグとして認識する機能もあるので、

例えば、

のようなURIを持つエントリ about-flavour.htmlblosxom , flavour というタグを持つことになります。

タグの追加/削除

新しいエントリを投稿したときや、タグを追加、または削除した場合、タグに関するキャッシュを再構築する必要があります。

再構築といってもやることは簡単で、

にアクセスするだけです。

そのときに、必ずblosxomのトップに ?recache_tags=1 をつけてアクセスして下さい。そうしないと、キャッシュが正しく構築されません。

flavourで使用可能な変数

変数一覧

flavourで使用できる変数は以下の通りです。

$tagging::tag_list

タグリストを出力します。mizzyさんのtaggingの $tagging::list に相当します。

$tagging::category_list

カテゴリリストを出力します。カテゴリの一覧には $tag_bundles で指定されたカテゴリが使用されます。

$tagging::bundle_list

カテゴリとそれに属するタグが出力されます。どのタグがどのカテゴリに属するかは $tag_bundles で設定します。

$tagging::tagcloud

タグクラウドを出力します。文字の大きさや色については、CSSで指定してください。

$tagging::current_tag

タグによってエントリを絞り込んでいる場合、絞り込んでいるタグを出力します。

例えば /blosxom.cgi?tag=blosxom でアクセスした場合、blosxomが出力されます。

$tagging::current_cat

カテゴリによってエントリを絞り込んでいる場合、絞り込んでいるカテゴリを出力します。

例えば /blosxom.cgi?category=coding でアクセスした場合、coding が出力されます。

$tagging::related_tags

タグの絞込みのリストを出力します。

$tagging::find_tag

パラメータfind_tagで指定されたタグを、$charsetで指定された文字コードで出力します。

例えば /blosxom.cgi?find_tag=blosxom とした場合、blosxom$charset で指定された文字コードで出力されます。

Ajaxから利用すると思われるので、普通はあまり使いません。

$tagging::tags_in_this

現在のエントリのタグ一覧を出力します。storyフレーバーでのみ使用できます。

$tagging::categories_in_this

現在のエントリのカテゴリ一覧を出力します。storyフレーバーでのみ使用できます。

$tagging::dc_subject

現在のエントリのカテゴリ一覧をRSSで利用できる形式(<dc:subject>タグ)で出力します。storyフレーバーでのみ使用できます。

デザインに関する補足

表示のカスタマイズはCSSで行ってください。タグクラウドに関しても、CSSで文字の大きさや色を設定してください。

タグクラウドはリスト(<ul>)で出力され、タグ一つ一つ( <li> )にlevel1のようなクラスが設定されます。level1-20 までです。

以下はタグクラウドに関するCSSの設定例です。

/* tagcloud */
ul.tagcloud li.level1  { font-size : 0.8em ; }
ul.tagcloud li.level2  { font-size : 1.0em ; }
ul.tagcloud li.level3  { font-size : 1.2em ; }
ul.tagcloud li.level4  { font-size : 1.4em ; }
ul.tagcloud li.level5  { font-size : 1.6em ; }
ul.tagcloud li.level6  { font-size : 1.8em ; }
ul.tagcloud li.level7  { font-size : 2.0em ; }
ul.tagcloud li.level8  { font-size : 2.2em ; }
ul.tagcloud li.level9  { font-size : 2.4em ; }
ul.tagcloud li.level10 { font-size : 2.6em ; }
ul.tagcloud li.level11 { font-size : 2.8em ; }
ul.tagcloud li.level12 { font-size : 3.0em ; }
ul.tagcloud li.level13 { font-size : 3.2em ; }
ul.tagcloud li.level14 { font-size : 3.4em ; }
ul.tagcloud li.level15 { font-size : 3.6em ; }
ul.tagcloud li.level16 { font-size : 3.8em ; }
ul.tagcloud li.level17 { font-size : 4.0em ; }
ul.tagcloud li.level18 { font-size : 4.2em ; }
ul.tagcloud li.level19 { font-size : 4.4em ; }
ul.tagcloud li.level20 { font-size : 4.6em ; }

ライセンス

ライセンスはtaggingの下のほうにも書いてありますが、blosxomと同じ MIT License です。

英語本文は を、日本語訳については を参考にしてください。

このライセンスに従う限り、改造や再配布は自由です。

要望やバグ報告、質問について

要望、バグ、質問がある場合、コメントやトラックバック、メールなどでお知らせください。なるべく、答えるようにします。

分かりやすく答えるようにはしますが、必ずしもわかりやすいとは限らないので、その辺は了承してください。

おまけ

ようやく書き終った。長いのは仕様です、というか短くできない。ちなみにこのtaggingプラグイン、blosxom本体よりも長いです。1000行超えてますよこれ。とにかくお待たせしました。どうぞご利用ください。

……エントリ書くのに二日かかってるってどう言う事だよ。

nyarla が大体

Scrapbox でコメントや意見を書く