snap_in plug-in †
ダウンロード
snap_in20070422.zip
開発方針 †
(snapimg プラグイン の開発方針より)
出来るだけ簡単にイメージファイルをエントリに取り込むためのプラグインを作る。
開発ログ †
Aug 12, 2005
- snapimg プラグインをもとに、外部 HTML ファイルを取り込む機能を追加
Feb 12, 2006
- 取り込めるファイルの拡張子を、変数によって変更可能に
- HTML の取り込み部分にも div 要素を付加する仕様に変更
Apr 22, 2006
- 画像ファイルのある URL を指定する際、フォルダ指定もできる仕様に変更
- div 要素の class 名を指定できるように変更
- bfep 版に仕様をあわせるために、余分なサブルーチンコールをなくしてシェイプアップ
Apr 22, 2007 版 全ソースコード †
# Blosxom Plugin: snap_in
# Author: kay(info@ellinikonblue.com)
# Version: 2007-4-22
# snap_in
#
# Turns square-bracketed image/html references into simple html markup
# * Can exist in any part of story body
# * image/html root is configurable
# * sets simple 'alt' tag automaticaly
#
# Usage Examples:
#
# [name.jpg] A image with 'alt' tag which is 'Image: name.jpg'
# [name.html] A html file insert
package snap_in;
# Configuration Section
my @image_ext = ( 'jpg', 'jpeg', 'gif', 'png' );
my @html_ext = ( 'html', 'htm' );
my $image_root = "$blosxom::url/lib/image/"; # the base image url
my $html_root = "$blosxom::plugin_state_dir/html"; # the base html path
my $image_class = "snapimg";
my $html_class = "snaphtml";
#-------------------------------------------------------------------------------
# Main Routine
$image_root =~ s!/$!!; $html_root =~ s!/$!!;
sub start {
return 1;
}
sub story {
my ($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_;
my $match_ext = join( "|", (@image_ext, @html_ext) );
$$body_ref =~ s/\[([\/\w\-\!\#\$\%\'\^\(\)\{\}\~]+)\.($match_ext)\]/replace( $1, $2 )/gies;
1;
}
sub replace {
my ( $name, $ext ) = @_;
my $imgext_list = join( "|", @image_ext );
my $htmlext_list = join( "|", @html_ext );
my $rtn = '';
if ( $ext =~ m/($imgext_list)/i ) {
$rtn = "<img src=\"$image_root/$name\.$ext\" alt=\"Image: $name\.$ext\" \/>";
$rtn = '<div class="' . $image_class . '">' . $rtn . '</div>';
return $rtn;
}
if ( $ext =~ m/($htmlext_list)/i ) {
if ( -f "$html_root/$name\.$ext" and open ( HTMLFILE, "$html_root/$name\.$ext" ) ) {
$rtn = join ( '', <HTMLFILE> );
$rtn = '<div class="' . $html_class . '">' . $rtn . '</div>';
close HTMLFILE;
}
return $rtn
}
return 0;
}
1;
導入 †
特に難しいことはないかと思いますが、読み込むイメージファイル*1 や HTML ファイルを格納するディレクトリを用意しておく必要があります。
プラグイン本体の編集 †
プラグイン本体ファイルの以下の変数を設定に応じて書き換えてください。
- @image_ext
- イメージファイルとして読み込むファイルの拡張子を指定します。
- @html_ext
- 外部 HTML ファイルとして読み込むファイルの拡張子を指定します。
- $image_root
- イメージファイルとして読み込むファイルが存在するディレクトリの URL を指定します。
- $html_root
- 外部 HTML ファイルとして読み込むファイルが存在するディレクトリの パス を指定します。
基本的にイメージファイルは、エントリに img 要素として置き換えられるため、 $image_root には URL を指定し、外部 HTML ファイルはファイルとして読み込んで置き換えられるので、 $html_root にはパスを指定することに注意してください。
以上で、プラグイン本体ファイルの編集は終了です。
アップロード †
プラグイン本体ファイルの編集が終了したら、プラグインディレクトリにアップロードしてください。
story フレーバー で、以下のように記述すると、その記述した位置に image.jpg ファイルに置き換わります。
[image.jpg]