Home> blogging > BigPAPIを利用した自前改造プラグイン

BigPAPIを利用した自前改造プラグイン

  • October 19, 2005 11:06 PM
  • blogging

MovableTypeを便利に使おうとした場合や、痒いところに手が届くようなカスタマイズを行う場合、これまではCSSやCMSテンプレートファイルそのものの変更が必要だったのですが、バージョン3.2以降では、BigPAPIを利用することでテンプレート改造がプラグイン化可能で、尋常じゃ無いくらい簡単に導入/回復ができます。

というわけで以下にBigPAPIを利用したMTテンプレートのオーバライドについて解説します。

まず好みのファイル名で.plファイルを作成します。
(なるべく既存のプラグインと被らないように!)
以降の記述は適当に読み替えて下さい。

MTプラグインのヘッダ記述です。
まぁバージョン3.xになってから記述可能な項目が増えましたが、基本は一緒です。


#これは取り敢えず唱えておきます
use strict;
#パッケージ名は好みでどうぞ
package MT::Plugin::プラグインの名前;
#バージョン表記は以下のように書きます(正式版なら1.0.0などで)
use vars qw( $VERSION );
$VERSION = '0.1.0';
#以下はプラグインリスト用の記述です
require MT::Plugin;
require MT;
my $plugin = MT::Plugin->new({
name => "プラグインの名前 plugin",
description => 'このプラグインで何が出来るか書きます',
doc_link => 'https://www.foo.bar/doc/',
author_name => 'プラグイン作者名',
author_link => 'プラグイン作者サイト',
version => $VERSION
});
#MTにプラグインの追加を宣言します
MT->add_plugin($plugin);

次に改造したい項目が表示される画面をブラウザで開きます。
アドレスバーに着目し、URL中で
__mode
に続く文字列に注目します。
今回は例としてエントリ編集画面を改造しますので、
view
がこれに当たります。

(MTインストールしたディレクトリ)/lib/MT/App/CMS.pm
を適当なテキストエディタで開いて、
$app->add_methods()
の後に"view"に関連する記述が無いか探します。
'view' => \&edit_object,
と書いてある行がありますので、次にedit_objectsという名前の関数を探します。
(関数はsub ~と書いてありますよ)
関数が見つかったら、その最後辺りを見ると以下のような行があると思います。
$app->build_page("edit_${type}.tmpl", \%param);
ここから目的のテンプレートファイルの目星がつきますので、
(MTインストールしたディレクトリ)/MT/mt/tmpl/cms
から該当しそうな.tmplファイルを見つけます。
そのファイル名使って上書きしたいテンプレートの宣言を行います。
例として、edit_entry.tmplを上書きしたい場合は、拡張子tmplを省いて


MT->add_callback('bigpapi::template::edit_entry', 9, $plugin, \&_template);

と記述しましょう。

目的の.tmplファイル内で、上書きしたい箇所を見つけたら、その箇所のコードを以下のように宣言します。


sub _template {
my ($cb, $app, $template) = @_;
my $old = qq{上書きしたい箇所のコード
};
$old = quotemeta($old);
my $new = <<"HTML";
上書き後の内容
HTML
$$template =~ s/$old/$new/;
}
1;

これで簡単な編集画面改造プラグインの出来上がりです。

SP4MTのプラグイン化も簡単に出来ますね...

参考訳元 : シックスアパートプロネット:BigPAPIの使い方

Comments:0

Comment Form

Index of all entries

Home> blogging > BigPAPIを利用した自前改造プラグイン

Categories
Archives
Syndication

Return to page top