Movable Type/第10回MTプラグイン勉強会 - MT-Appのリファレンスを精読する http://www.ark-web.jp/sandbox/wiki/953.html

Movable Type/第10回MTプラグイン勉強会 - MT-Appのリファレンスを精読する

第10回はMTのプラグイン、特に管理画面を拡張するようなプラグイン作成時に関連の深いMT::Appクラスのリファレンスを精読し、重要なAPIについて確認していきたいと思います。

MT::App
MT::App::CMS

[edit]

動画(Ustream)

勉強会の模様をアップしました。

Ustreamのチャンネルはこちら。
http://www.ustream.tv/channel/mt%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8B%89%E5%BC%B7%E4%BC%9A

[edit]

ご感想・ご質問など

ご感想、ご質問などあればお気軽にどうぞ。頂けるととても励みになります。


[edit]

ネタ

[edit]

日時

[edit]

MT::App

[edit]

DESCRIPTION

日本語リファレンスより引用。

MT::Appは、Movable TypeのWebアプリケーションの基本クラスです。標準的なCGIとして動作するアプリケーションや、Apache::Registryを使って動作するアプリケーション、mod_perlハンドラーとして動作するアプリケーションに対応します。MT::Appは、直接使用するためのものではなく、 Movable Typeフレームワークを使った他のアプリケーション(たとえばMT::App::CMS)の基本クラスとなるためのものです。

直接利用するのではなく、Movable Typeフレームワークを利用する他のアプリケーションの基礎クラスとして利用される。以下の例のように。

   package MT::App::Foo;
   use MT::App;
   @MT::App::Foo::ISA = qw( MT::App );

   package main;
   my $app = MT::App::Foo->new;
   $app->run;
[edit]

継承関係

MT::AppクラスはMTクラスを継承している。そのため、MT::AppではMTクラスで実装されているコールバックの仕組みを利用できる。

[edit]

CALLBACKS

MT::App#CALLBACKS

MT::App(実際はMT)は3つのコールバックの実行タイミングを提供します。

  1. テンプレートエンジンが指定したテンプレートファイルを読み込んだタイミング
  2. テンプレートエンジンがMT::App->build_pageメソッドでページを構築「しようとする
    」タイミング
  3. テンプレートエンジンがMT::App->build_pageメソッドでページを構築「した」タイミング

コールバックの登録は次のようになります。

MT->add_callback($meth, $priority, $plugin, $code);
    $meth: コールバックのフック先(タイミングと対象アプリケーション、テンプレートファイル指定。後述)
    $priority: 1〜10の間でコールバック実行の優先順位を指定。数値が小さい順から優先されて実行される。extraで0と11も使える。0は必ず最初に、11は必ず最後に実行させる。ただし、他とバッティングするとエラーになる。
    $plugin: オプション。コールバックに紐付けられたMT::Pluginオブジェクト。意味がよくわらかない^^;
    $code: コールバックハンドラのコードリファレンス

この仕組みは管理画面のUIをカスタマイズするtransformerプラグインの作成でも利用されます。MT4.xプラグイン作成/transformerプラグインもご参考ください。

[edit]

1の例

<package>::template_source
<package>::template_source.<filename>
※ <package>はアプリケーションを実行するフルパッケージ名(たとえばMT::App::CMS)

MT::App::CMSがmenu.tmplを読み込むタイミングの指定は
MT::App::CMS::template_source.menu

ワイルドカードを利用して、パッケージ(アプリケーション)を問わず全てのテンプレートファイルを読み込むタイミングを指定することもできる
*::template_source

このタイミングでコールバックハンドラに渡されるパラメータは次の通り。

callback($eh, $app, \$tmpl)
    $eh: MT::Callback(コールバックハンドラー)
    $app: アプリケーションオブジェクト(上述の<package>のオブジェクト)
    \$tmpl: テンプレートファイルの内容(文字列)へのリファレンス
[edit]

2の例

<package>::template_param
<package>::template_param.<filename>

このタイミングでコールバックハンドラに渡されるパラメータは次の通り。

callback($eh, $app, \%param, $tmpl)
    $eh: MT::Callback(コールバックハンドラー)
    $app: アプリケーションオブジェクト(上述の<package>のオブジェクト)
    \%param: MT::App->build_pageメソッドに渡される%paramパラメータのハッシュリファレンス
    $tmpl: MT::Templateオブジェクト

MT::App - build_page

このタイミングで実行するコールバック関数は主にテンプレートエンジンによって出力が作成される前に$param_refに変更を加える目的で利用します。

[edit]

3の例

package>::template_output

package>::template_output.<filename>

このタイミングでコールバックハンドラに渡されるパラメータは次の通り。

callback($eh, $app, \$tmpl_str, \%param, $tmpl)
    $eh: MT::Callback(コールバックハンドラー)
    $app: アプリケーションオブジェクト(上述の<package>のオブジェクト)
    \$tmpl_str: MT::App->build_pageメソッドで作成された出力(結果文字列)へのリファレンス
    \%param: MT::App->build_pageメソッドに渡された%paramパラメータのハッシュリファレンス
    $tmpl: MT::Templateオブジェクト

MT::App - build_page

このタイミングで実行するコールバック関数は主にテンプレートエンジンによって出力が作成された後にその結果文字列に変更を加える目的で利用します。

[edit]

METHODS

以下、リファレンスを眺めつつ、主要なものだけ時間をとって解説。

[edit]

add_return_arg、call_return、return_uri、make_return_args、return_args、return_uri、uri_params

[edit]

session、start_session、make_session

[edit]

current_magic、make_magic_token、validate_magic

[edit]

post_run、pre_run

[edit]

log、trace

デバッグに使える。logは[システムメニュー]->[ツール]->[ログ]でみれる。
traceはmt-config.cgiに

DebugMode 1

と指定すると、画面上にメッセージが表示される。

MT::App - log、trace

[edit]

次回予定

次回はMT::Appのリファレンス読みの続きと(時間があれば)MT::App::CMS、MT::Pluginのリファレンスを読むことを予定しています。

投稿者進地 | パーマリンク | コメント(0)

| append.gif

tag: Movable TypeMTMTMTPlugin勉強会


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-07 (木) 09:22:50 (4148d)

アークウェブのサービスやソリューションはこちら