今天想将带编号的图片随机地显示在模板上, 于是就想写一插件来实现, 在看了几个现有的几个插件代码后, 就开始写起来. 插件名为"RandomDigit", 用法如下:

<$MTRandomDigit min=... max=... width=... $>

    min   : the minimum random value, default 0.
    max   : the maximum random value, default 10.
    width : the digit count (zero prefixed), default 0.

    今天我还没有更改模板, 过几个改一下模板来试用一下这个我自已开发的插件. 源代码如下:

# Copyright (c) 2007, Fangxin Lou. (http://www.anysql.net/)

use MT::Template::Context;

MT::Template::Context->add_tag(RandomDigit => \&get_random_digit );

sub get_random_digit
{
  my ($ctx, $args) = @_;
  my $max_num = $args->{max};
  my $min_num = $args->{min};
  my $width   = $args->{width};
  
  $max_num=10 unless ($max_num);
  $min_num=0  unless ($min_num);
  $width  =0  unless ($width);

  my $val = 0;

  if ($width)
  {
    $val = sprintf("%0${width}d",($min_num+(rand(($max_num - $min_num) * 20)/20)));
  }
  else
  {
    $val = sprintf("%d",($min_num+(rand(($max_num - $min_num) * 20)/20)));
  }

  scalar $val;
}

1;

    至于如何放置插件, 我在这儿就不讲了.