MT::Objectのサブクラスの作成は実は簡単。

| コメント(2) | トラックバック(0)

これがどうにも理解できなかったんですよね(俺だけ?)。

小粋空間さんのところで紹介されていたプラグインのソースを眺めていて...あぁやっと分かった。PHPでインストーラとか用意したりしなくて良かったんですよね。

実はちゃんとオブジェクト・リファレンスには書いてあるわけですが (みんなこれで理解してたんだ...すげぇ) ってかやってみたら簡単やった...ってのが多いな、最近。

schema_version

プラグインでいくつかのオブジェクト・クラスを宣言している場合、これらのクラスのインストールまたはアップグレードが必要かどうかを判断するためにschema_versionを用います。Movable Typeでは、プラグインのschema_versionをMT::Configテーブルに保存し、参照できるようになっています。

object_classes

MTのアップグレード処理で保持すべきMT::Objectの派生クラスのリストを宣言します。

object_classes => [ 'MyPlugin::Foo', 'MyPlugin::Bar' ]

当該オブジェクト・パッケージのスキーマも保持するため、schema_versionも併用してください。

つまり, インストール(データベースのアップグレード)について特にコードを書く必要は無いんだな。Permalink.pm を用意して,

package MT::Permalink;
use strict;

@MT::Permalink::ISA = qw( MT::Object );
__PACKAGE__->install_properties({
	column_defs => {
		'id' => 'integer not null',
		'blog_id' => 'integer not null',
		'permalink' => 'string(255)',
		'modified_on' => 'timestamp',
	},
	indexes => {
		blog_id => 1,
		permalink => 1,
		modified_on => 1,
	},
	child_of => 'MT::Blog',
	datasource => 'permalink',
	primary_key => 'id',
});
1;

プラグインの中で schema_version と object_classes を加えてやる。

use vars qw( $VERSION $SCHEMA_VERSION );
$SCHEMA_VERSION = '0.50';

@MT::Plugin::RebuildAt1stView::ISA = qw(MT::Plugin);

my $plugin = new MT::Plugin::RebuildAt1stView({
	name => 'RebuildAt1stView',
(中略)
	'schema_version' => $SCHEMA_VERSION,
	object_classes => [
		'MT::Permalink',
	],
});

プラグインをアップロードしてログインしようとすると...

アップグレード画面

設定完了画面

ということで, 導入がより簡単になった RebuildAt1stView(Beta) をアップしました。

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/294

コメント(2)

はじめまして。

これまでのアーティクル、エマージェンシーにリファレンスにさせていただいています。

私もDBのテイブルフレイムをどうやるものかとスィンクしていましたが、
なるほど、こういうメソッドゥがあったわけですね。

私もMTをプラットフォームとしてユースするべくいろいろトゥライアルアンドゥエラーしているウェイファーケイクフィルドゥウィズビーンジャムですが、
コントゥロウルターミナルスクリーンのストゥラクチュアをアンダスタンディングするのにとても苦労しています。


オリジナルのコメント:

はじめまして。

これまでの記事、非常に参考にさせていただいています。

私もDBのテーブル作成をどうやるものかと思っていましたが、
なるほど、こういう方法があったわけですね。

私もMTをプラットフォームとして使うべくいろいろ試行錯誤している最中ですが、
管理画面の仕組みを理解するのにとても苦労しています。

>私もDBのテーブル作成をどうやるものかと思っていましたが、
なるほど、こういう方法があったわけですね。

そう、僕も半年くらい前からどうやるんだろうって思っていて、まーいーや、ってSQLでDB拡張してたんですけど、配布するプラグインとかのソリューションじゃちと辛いな、と思ってました。
これで心おきなく?DB拡張型のプラグインが書けます。

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年7月 4日 11:58に書いたブログ記事です。

ひとつ前のブログ記事は「そろそろ静的生成と動的生成ついてひとこと言っとくか。」です。

次のブログ記事は「大人の言うことなんて放っておけば良い。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6