taggingですが、完成しました。なので公開しますというエントリ。
はっきり言って、長い。
追記 2009-02-10T17:35:00+09:00
もう作ってから二年以上も経ってますが、このtaggingは僕がPerl初心者の頃に作った代物なので、 わけの分からないことをしている部分があったり、おかしな処理をしている所があるので、 今現在使用する事はオススメできません。
blosxomでtaggingするプラグインに関しては、mizzyさんのオリジナルか、海外の方が作られたtaggingを使うことをオススメします。
あと微妙に書き直してたりもするんですが、現在放置中なため、完成の目処は立っていません。 まあ書き直し版については完成したときにcoderepos辺りで公開しようと考えていますが、 あんまりアテにしないでください><
これは何か
mizzyさんが作られたBlosxomのプラグイン tagging (trac)の開発を引き継ぎ、 色々と機能を追加したものです。
主な機能
この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というタグが設定されます。
また、すでにあるディレクトリベースのカテゴリをタグとして認識する機能もあるので、
例えば、
http://yourdomain/blosxom.cgi/blosxom/flavour/about-flavour.html
のようなURIを持つエントリabout-flavour.htmlはblosxom,flavourという
タグを持つことになります。
タグの追加/削除
新しいエントリを投稿したときや、タグを追加、または削除した場合、 タグに関するキャッシュを再構築する必要があります。
再構築といってもやることは簡単で、
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で利用できる形式(<dc:subject>タグ)で出力します。
storyフレーバーでのみ使用できます。
デザインに関する補足
表示のカスタマイズはCSSで行ってください。 タグクラウドに関しても、CSSで文字の大きさや色を設定してください。
タグクラウドはリスト(<ul>)で出力され、タグ一つ一つ(<li>)に
level1のようなクラスが設定されます。levelは1-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です。
英語本文はhttp://www.opensource.org/licenses/mit-license.phpを、 日本語訳についてはhttp://www.opensource.jp/licenses/mit-license.htmlを参考にしてください。
このライセンスに従う限り、改造や再配布は自由です。
要望やバグ報告、質問について
要望、バグ、質問がある場合、コメントやトラックバック、メールなどでお知らせください。 なるべく、答えるようにします。
分かりやすく答えるようにはしますが、必ずしもわかりやすいとは限らないので、 その辺は了承してください。
おまけ
ようやく書き終った。長いのは仕様です、というか短くできない。
ちなみにこのtaggingプラグイン、blosxom本体よりも長いです。1000行超えてますよこれ。
とにかくお待たせしました。どうぞご利用ください。
……エントリ書くのに二日かかってるってどう言う事だよ。