by @nyarla

Blosxom Plugin : tagging

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

はっきり言って、長い。

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

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

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

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

これは何か

主な機能

この 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 というタグが設定されます。

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

例えば、

<http://yourdomain/blosxom.cgi/blosxom/flavour/about-flavour.html http://yourdomain/blosxom.cgi/blosxom/flavour/about-flavour.html>

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

タグの追加/削除

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

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

<http://yourdomain/blosxom.cgi?recache_tags=1 http://yourdomain/blosxom.cgi?recache_tags=1>

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

そのときに、必ず 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 で利用できる形式(&lt;dc:subject&gt;タグ)で出力します。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 です。

英語本文は <https://www.opensource.org/licenses/mit-license.php https://www.opensource.org/licenses/mit-license.php> を、日本語訳については <https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license> を参考にしてください。

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

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

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

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

おまけ

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

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