概要: テンプレートで Feed を整形して出力するプラグイン
Plagger で Feed の出力をテンプレートつかって自由に整形したい! ということで Publish::JavaScript を継承して作ってみた。
package Plagger::Plugin::Publish::Template; use strict; use warnings; use base qw( Plagger::Plugin::Publish::JavaScript ); sub register { my ( $self, $c ) = @_; $c->register_hook( $self, 'publish.feed' => $self->can('feed'), ); } sub feed { my($self, $context, $args) = @_; my $file = Plagger::Util::filename_for($args->{feed}, $self->conf->{filename} || '%i.txt'); my $path = File::Spec->catfile($self->conf->{dir}, $file); $context->log(info => "writing output to $path"); my $body = $self->templatize( $self->conf->{'template'} , { feed => $args->{feed} }); open my $out, ">:utf8", $path or $context->error("$path: $!"); print $out $body; close $out; } 1; __END__
ライセンスは Plagger と同じ Perl のライセンスで。設定はこんな感じ。
plugins: - module: Publish::Template config: dir: /path/to/dir template: template.tt filename: output.txt
dir
とfilename
は Publish::Javascript と同じ。でtemplate
に関しては、
Publish::Template の assets ディレクトリから指定されたファイル、上記の場合だとtemplate.tt
が読み込まれる。
ちなみにこのプラグイン、Publish::JavaScript で読み込むテンプレート名を設定でいじれるようにしただけの代物。 結構簡単に書けました。
とりあえず、Blosxom のエントリ生成するとか色々できそう。