世界のナベアツをプラグインで表現
perlでプラグインを書く練習として、これに取り組んだ。このお題は、某コミュでそれなりに盛り上がっているようだが、プラグインでこれを実現するのはコミュ用という意向ではない(誰かの参考になるかと思って、結局はポストしたが)。あくまで、Perlの練習。
テンプレートのコード
劇的に短くなる。
<ul>
<MTFor var="x" from="1" to="40">
<li><MTGetVar name="__counter__"> = <MTNabeAzz number="$__counter__"></li>
</MTFor>
</ul>
プラグインのコード
nabeazz.plなどと名前をつけてpluginsフォルダへ放り込めばOK。
※Perlは昨日初めて触った。なのでコードがあっているのかどうかなどはようわからん。でも一応うまく動いてはいる。
package MT::Plugin::NabeAzz;
use base 'MT::Plugin';
use strict;
use MT;
use MT::Template::Context;
use MT::Plugin;
use utf8;
my $plugin = MT::Plugin::NabeAzz->new({
id => 'NabeAzz',
name => 'Nabe Azz',
version => '1.00',
author_name => "<MT_TRANS phrase=\"apstar\">",
author_link => 'http://www.apstars.com/blog/',
description => "<MT_TRANS phrase=\"Nabe Azz plugin.\">",
});
MT->add_plugin($plugin);
sub init_registry
{
my $plugin = shift;
$plugin->registry({
tags => {
function => {
'NabeAzz' => \&nabe_azz,
},
},
});
}
sub nabe_azz {
my ($ctx, $args) = @_;
my @aho = ('Aho1','Aho2','Aho3','Aho4','Aho5','Aho6','Aho7','Aho8','Aho9','Aho10');
my @inu = ('Inu1','Inu2','Inu3','Inu4','Inu5','Inu6','Inu7','Inu8','Inu9','Inu10');
my $count = 10;
my $ahoindex = int(rand($count));
my $inuindex = int(rand($count));
my $num = $args->{number};
my $out = '';
$out .= $aho[$ahoindex] if ($num % 3 == 0 or $num =~ /3/);
$out .= $inu[$inuindex] if ($num % 5 == 0 or $num =~ /5/);
$out = $num if (!$out);
$out;
}
1;
- カテゴリ:212MT4.1実験室
トラックバック(0)
このブログ記事を参照しているブログ一覧: 世界のナベアツをプラグインで表現
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4分科会第2回勉強会に参加しました
- MTOS4.2RC1:各ページの拡張子を得る
- MTでAA
- MT4:MTの変数演算をプラグインで拡張
- MT4.1:「MT」という文字をテーブルの背景色で表現
- 「NabeAzzテンプレート問題・パート2」へ乗ってみる
- 作りたいプラグインの覚え書き
- 世界のナベアツをプラグインで表現
- MT4:世界のナベアツをテンプレートタグで表現(2)
- MT4.1:プラグインを書いてみよう
- MT4.1:予約変数の実験
- Movable Type 4.15 テスト中(1)
- mtde.info の、反省点
- mtde.info の、できる経緯
- MT4:前のエントリ・次のエントリのリンクをカテゴリごとに(条件あり)
- MT4:世界のナベアツをテンプレートタグで表現
- MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
- MT4.1:変数参照専用のモジュールの可能性
- MT4:XHTML+CSS素材テンプレート化の不具合修正・要望リスト
- MT4.1:Movable Type 4.1用テンプレート作った

コメントする