拙著「個人投資家は低位株で儲けなさい」が発売されました。
株価が安い「低位株」に投資する方法を解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
Transformerプラグインの作成方法
Movable Type 3.3では、管理画面のカスタマイズを行う際には、従来のBIGPAPIに代わって、「Transformer」というタイプのプラグインを使います。
アメリカのMovable Typeのフォーラムに、BIGPAPI作者のKevin Shai氏が、BIGPAPI対応のRightFieldプラグインをTransformer対応に書き換えたものがありましたので、それを元に、Transformerプラグインの作り方を調べてみました。
従来のBIGPAPIのプラグインを少し書き換えるだけで済みそうです。
1.プラグインの登録
TransformerプラグインをMTに登録するには、プラグインの中に以下のような行を入れます。
「テンプレート名」の部分には、書き換えるテンプレートのファイル名から拡張子を取ったものを指定します。
例えば、「edit_entry.tmpl」を書き換える場合、テンプレート名の部分に「edit_entry」を入れます。
MT->add_callback('MT::App::CMS::AppTemplateSource.テンプレート名', 9, $plugin, \&書き換えを行うサブルーチン);
2.書き換えを行うサブルーチン
テンプレートの書き換えを行うサブルーチンは、従来のBIGPAPIと同じ要領で作ります。
テンプレートの中から書き換えたい部分を検索し、置換する処理を行います。
サブルーチンには「cb」「app」「template」の3つの引数が渡されます。
最後の「template」を介して、置換の処理を行うことができます。
3.プラグインの例
Transformerプラグインの簡単な例として、個々のBlogのメニューに、そのBlogのエントリーの数を表示するものを作ってみました(赤枠で囲んだ部分が動作の例)。
プラグインのソースは以下の通りです。
このソースをコピーし、「TransformerTest.pl」という名前で保存して、Movable Typeの「plugins」ディレクトリにアップロードします。
package MT::Plugin::TransformerTest; use strict; use base qw( MT::Plugin ); require MT::Plugin; require MT; my $plugin = MT::Plugin::TransformerTest->new({ 'name' => 'TransformerTest', 'author_name' => 'H.Fujimoto', 'author_link' => 'http://www.h-fj.com/blog/', 'description' => 'Transformer plugin test.', 'version' => '1.00', }); MT->add_plugin($plugin); MT->add_callback('MT::App::CMS::AppTemplateSource.menu', 9, $plugin, \&edit_menu_template); sub edit_menu_template { my ($cb, $app, $template) = @_; my $blog_id = $app->{query}->param('blog_id'); my $entry_count = MT::Entry->count({ blog_id => $blog_id }); my $old = <<HERE; <p class="page-desc"><MT_TRANS phrase="Here is an overview of [_1]." params="<TMPL_VAR NAME=BLOG_NAME ESCAPE=HTML>"></p> HERE $old = quotemeta($old); my $new = <<HERE; <p class="page-desc"><MT_TRANS phrase="Here is an overview of [_1]." params="<TMPL_VAR NAME=BLOG_NAME ESCAPE=HTML>"></p> <p class="page-desc">Number of entries : $entry_count</p> HERE $$template =~ s/$old/$new/; } 1;
4.paramタイプのプラグイン
BIGPAPIでは、「param」というタイプのプラグインを作ることができました。
Transformerプラグインでも、同じタイプのプラグインを作ることができます。
こちらの作り方はまだ調べていませんが、これもBIGPAPIとほとんど同じと思われます。