カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

Blosxom Plugin : tagging

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

はっきり言って、長い。

追記 (2009-02-10T17: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 というタグが設定されます。

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

例えば、

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

のようなURIを持つエントリ about-flavour.htmlblosxom , 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 のようなクラスが設定されます。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://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_licenseを参考にしてください。

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

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

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

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

おまけ

ようやく書き終った。長いのは仕様です、というか短くできない。

ちなみにこのtaggingプラグイン、blosxom本体よりも長いです。1000行超えてますよこれ。

とにかくお待たせしました。どうぞご利用ください。

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