« 世界の山ちゃん川崎店9月22日オープン | メイン | 僕の911 »

MT plug-in開発の勉強(aws.plの修正)

Goodpicで本が売れていると聞いて、それならば(笑)自分もやってみようと昨日から amazon web serviceのプラグイン、aws.pl(ひらたさん作)をインストールして使おうとしている。ところがなかなかうまく行かない。

今日は急がば廻れで、MT plug-inの作り方について勉強をはじめてみた。

自分の環境は

MT2.64+日本語パッチ
perl 5.8.0

Developing Movable Type Plug-ins

さて、ここの例が早速うまく動かない(苦笑)


package MT::Plugin::HelloWorld;
use MT::Template::Context;
MT::Template::Context->add_tag(HelloWorld => \&hello_world);

sub hello_world {
my $ctx = shift;
my $args = shift;
return "Hello " defined($args->{world})?$args->{world}:'World';
}
1;


最後の、 return "Hello " defined($args->{world})?$args->{world}:'World';を


my $str = defined($args->{world})?$args->{world}:'World';
return "Hello $str";


に変えると動いた。

The Stash


package MT::Plugin::SimpleLoop;
use MT::Template::Context;
MT::Template::Context->add_container_tag(SimpleLoop => \&loop );
MT::Template::Context->add_tag(SimpleLoopIndex => \&loop_index );

sub loop {
my $ctx = shift;
my $args = shift;
my $content = '';
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
for my $i(1..$args->{loops}) {
$ctx->stash('loop_index',$i);
my $out = $builder->build($ctx, $tokens);
$content .= $out;
}
}

sub loop_index {
my $ctx = shift;
return $ctx->stash('loop_index');
}
1;

こちらも動かない(笑) 

本家 movable typeの方を見ると、
Movable Type User Manual: PROGRAMMATIC INTERFACES


MT::Template::Context->add_container_tag(Loop => sub {
my $ctx = shift;
my $res = '';
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
for my $i (1..5) {
$ctx->stash('i_value', $i);
defined(my $out = $builder->build($ctx, $tokens))
or return $ctx->error($ctx->errstr);
$res .= $out;
}
$res;
});
MT::Template::Context->add_tag(LoopIValue => sub {
my $ctx = shift;
$ctx->stash('i_value');
});


となっている。違いはなんだろうと思い、


sub loop {
my $ctx = shift;
my $args = shift;
my $content = '';
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
for my $i(1..$args->{loops}) {
$ctx->stash('loop_index',$i);
my $out = $builder->build($ctx, $tokens);
$content .= $out;
}
return $content;
}


のように、赤字の部分を追加して動くようになった。

perlのバージョンの違いによって、parserの挙動が違うのかな?ひらたさんのところとかねこくん(Goodpic)は perl 5.6.1を利用しているそう。

(追記)
aws.plが動くようになりました。148行目付近


#$res .= sprintf($out);
$res .= $out;
if ($q{lastn}>0) { $q{lastn}--; }
last if ($q{lastn} == 0);
}
#if ($charset ne 'utf8') { $res = Jcode->new($res, 'utf8')->$charset(); }
$res = Jcode->new($res, 'utf8')->$charset();
#sprintf($res);
return $res;

コメントアウトした部分の下が修正部分です。

さあ、これからどんどん本やCDを紹介するぞ!?

【この記事に関連するエントリー: weblog

トラックバック

このエントリーのトラックバックURL:
http://nomano.shiwaza.com/mt333/tb203.cgi/148

この一覧は、次のエントリーを参照しています: MT plug-in開発の勉強(aws.plの修正):

» MT plug-inがperl 5.8.0で動かないとき 送信元 SEYA.ORG
自分もMTplug-inの開発には興味あるのですが、perlのバージョンにより動かないプラグインもあるようです。 以下のサイトでそのあたりのことが少し書いてあります。 プラグインがうまく... [詳しくはこちら]

» Amazon Web サービス 送信元 C調スムージージャム
たまには、MobvableTypeのカスタマイズの話など。 今回、「自分の欲しいものメモ」「おすすめリスト」みたいな感じで、Amazon Webサービスを導入してみました。 「Amazon Webサービスって何?... [詳しくはこちら]

» Amazon RSSFEED 送信元 UWORLD
AmazonのRSSFEEDを自動生成するプログラムを作成しました。 URL まだまだバグ有りの状態ですが、とりあえず本サイト右のAmazonLinkは 自動生成されたRSSFEEDをBlogのTemplateでAmazonRSS.xmlとして保存... [詳しくはこちら]

» aws.pl 導入。 送信元 FLUX CHANGE
simple amazon log: aws.pl - MT plugin for Amazon webservices Amazonウェブサービスを Movable Type から使うためのプラグインだそうです。 初めてプラグインて物を入れてみました。 はじめはうまくいかなか... [詳しくはこちら]

» aws.plが動かなくなった 送信元 Sukesam blog
サーバを入れ替えてperlも5.81になってトップページを 書き換えてみるとなんかエラーが表示されてインデックスが 文字化け。原因を探っているとtnomaさんが解決してくれてました。 参考... [詳しくはこちら]

» aws.plを導入してみました。 送信元 LOVE!?
simple amazon log: aws.pl - MT plugin for Amazon webservices Amazonウェブサービスを Movable Type から使うためのプラグインを作りました。 というわけで、早速使ってみたのですが、サイト全体が文字化け... [詳しくはこちら]

» amazonプラグインを入れてみる 送信元 salt-style
"> "> aws.plのインストールに関しては、のまのしわざとか、ready for the blueとかShibuya's Logのサイトの情報を参考にしました。 これらの情報がなかったらしんどかったと思います。ありがとう... [詳しくはこちら]

» MTリビルドでエラー 送信元 eXpirituaLog+
syntax error at line 1, column 49, byte 49 at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/XML/Parser.pm line 185 出ました、うちでも。多くのサイトで既に様々な報告がなされています。 基本的にMTAwsの使用... [詳しくはこちら]

» MTリビルドエラー::解決 送信元 eXpirituaLog+
syntax error at line 1, column 49, byte 49 at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/XML/Parser.pm line 185 出ました、うちでも。多くのサイトで既に様々な報告がなされています。 基本的にMTAwsの使用... [詳しくはこちら]

» aws.pl導入 送信元 Ari's Blobox
aws.pl導入でデフォルトで動かず、のまのしわざさんのこの記事とPatchで無事動きました。感謝です。 [詳しくはこちら]

» aws.pl導入記-1 (ファイルの修正) 送信元 draftshop's blog...
のまのしわざ: MT plug-in開発の勉強(aws.plの修正) 実は先ほどの事件で,追加しようとしていたプラグインはaws.plというもので,ご存知Amazonのアフェリエイト・システムを利用してみよう... [詳しくはこちら]

» aws.pl導入記-1 (ファイルの修正) 送信元 draftshop's blog...
のまのしわざ: MT plug-in開発の勉強(aws.plの修正) 実は先ほどの事件で,追加しようとしていたプラグインはaws.plというもので,ご存知Amazon.comのアフェリエイト・システムを利用してみよ... [詳しくはこちら]

» aws.pl導入記-1 (ファイルの修正) 送信元 draftshop's blog...
のまのしわざ: MT plug-in開発の勉強(aws.plの修正) 実は先ほどの事件で,追加しようとしていたプラグインはaws.plというもので,ご存知Amazon.co.jpのアソシエイト・プログラムを利用してみ... [詳しくはこちら]

» awsの修正(2) 送信元 PC日記
やっと本のイメージが出ると思ったら、リンク先のURLがおかしい。%20%20%20とかいっぱい出る。 そこで、以下の修正をしてみたところ直ったみたい。 のまのしわざ: MT plug-in開発の勉強(aws.... [詳しくはこちら]

» aws.plで文字化け。 送信元 blog@Junkie Surfer Notes
aws.plを使っている枠だけがなぜか文字化けを起こしてしまいました。 [詳しくはこちら]

» aws.plの修正 送信元 first_test
のまのしわざ: MT plug-in開発の勉強(aws.plの修正) なんとなく、メモ。... [詳しくはこちら]

» awsプラグイン、導入 送信元 BLOG seabindweed
awsプラグイン、以前に一度導入して、その時は、hirataさんとtnomaさんのエントリーやコメントを参考にして導入出来たのですが、今回はちょっと苦労しました。 その他、参考にさせていただいたサイトは、以下のサイトです。 ありがとうございました。 ・LVCP Blog:awsプラ... [詳しくはこちら]

» 復旧 送信元 w e b l o g ___ re-urge.com
先日から正常に稼動しなくなっていた「衝動物品」で利用しているプラグインaws.pl 。原因が不明だったためコメントアウトしていたのだが、ready for the blueさんトコで気になる記事発見... [詳しくはこちら]

» 復旧 送信元 w e b l o g ___ re-urge.com
先日から正常に稼動しなくなっていた「衝動物品」で利用しているプラグインaws.pl 。原因が不明だったためコメントアウトしていたのだが、ready for the blueさんトコで気になる記事発見... [詳しくはこちら]

» aws.plの導入 送信元 INTERMISSION SPACE
各所のBlogでAmazonの本が紹介さ... [詳しくはこちら]

» たらい回し状態です。aws.pl インストール。 送信元 Blog y.tv
悩んでいるあなたに送る、Movable Type 3.0にAWSをいれるためのエ... [詳しくはこちら]

» Amazon Webサービスを利用する 送信元 KON太の気ままな生活。
Movable Typeでブログを構築したら、いろいろな機能を試したくなった。 [詳しくはこちら]

» aws.plの修正 送信元 poncan -MT-
Use of uninitialized value in sprintf ..... [詳しくはこちら]

コメントを投稿

富士スピードウェイ集団訴訟関連

実践Web2.0 BOOK 人気ブロガー直伝! 一歩先行くWeb2.0的ワーキングスタイル
4844324187
↑この本のお手伝いをしました。是非チェックしてみて下さい。

About

このエントリーの概要です。

あわせて読みたい
フィードメーター - [の] のまのしわざ