とりあえず手始めにExcerptという、要約になってない短文を作り出すプラグインを作りました。動いた! とか感動してみる。半日くらいかかりました。2.0のプラグインのことは忘れましょう。まったく今までの知識は役に立たないと思われます。

まずはコード。


# Blosxom 3.0 Plugin: Excerpt
# Kyo Nagashima <kyo@hail2u.net>

package Blosxom::Plugin::Excerpt;

use strict;

sub run {
  my $self = shift;

  my $body = $self->{state}->{current_entry}->{body};

  my $excerpt = $body;
  $excerpt =~ s/<.*?>//g;
  $excerpt .= "...";

  $self->{state}->{current_entry}->{Plugin}->{Excerpt}->{excerpt} = $excerpt;

  return 1;
}

1;

これをデフォルトだとpluginsディレクトリにExcerpt.pmという名前で保存します。

次にこれはエントリごとの処理なので、handlers.entryを更新。

# Entry Handlers

Blosxom::filter_entry_by_path
Blosxom::build_entry_date
Blosxom::filter_entry_by_date
Blosxom::read_entry_file
Blosxom::shortcut_max_entries

Blosxom::Plugin::Excerpt::run

Blosxom::render_entry

多分、Blosxom::render_entryの前にBlosxom::Plugin::Excerpt::runを書かないとダメです(ここで子一時間詰まった)。

その上でentry.flavournameに$Plugin::Excerpt::excerptと書くと要約になってない短文が出てくるようになります。

これで良いのかまるでわかんないので信用しないほうが良いです。リファレンスのプラグインが公開されることを祈って・・・。

とりえあずはこう書くものという前提での感想。ユーザビリティ的には改悪な気がします。プラグインを置けば何も考えずに利用できるとかそういうことがなくなった(handlers.flowまたはhandlers.entryの編集必須)と思うので。一方、ハッシュのハッシュのハッシュの(以下続く)というデータ構造を一発で全部取れるので、素晴らしく楽しいです(改変や追加が自由自在)。

追記@2004/05/03

リファレンス・プラグインに従って、適当にコードを改変しました。あんまり気にしなくても良い気がする。