トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

blosxom

snap_in plug-in

ダウンロード filesnap_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]

リンク集



*1 ウェブサーバがアクセスできるディレクトリである必要があります
添付ファイル: filesnap_in20070422.zip 646件 [詳細] filesnap_in20060212.lzh 866件 [詳細]

© 2004-2010 Ellinikonblue.com All Rights Reserved.