Movable Typeプラグイン開発:独自オブジェクトの定義と操作ガイド
作成日:2025.09.26
Movable Typeのプラグイン開発において、独自オブジェクトの定義と操作方法を具体例とともに解説します。config.yamlでの設定記述から、Perlモジュールでのオブジェクト実装、そして基本的なロードや保存の操作まで、一連の手順を紹介。
Movable Type でプラグインを開発する際に、独自のオブジェクトを新規に作成する方法について解説します。
今回は MT::Shop
というオブジェクトを MT:Entry
の子オブジェクトとして追加するプラグインを例に説明していきます。
MTプラグイン開発の基本的な手順については、Movable Typeプラグイン開発入門:第一回 基本的なプラグインの作成方法 などを参照。
config.yaml の記述
新規にオブジェクトを追加するには、プラグインの config.yaml
ファイルに以下のように記述します。
schema_version: 1.00
object_types:
shop: MT::Shop
上記の例では、shop
というオブジェクトタイプを MT::Shop
クラスとして定義しています。
schema_version
の値は、プラグインのアップデートなどによりテーブルのカラムを追加・変更した場合などに変更します。
MT/shop.pm の作成
続いて、プラグインディレクトリ内に lib/MT/shop.pm
というファイルを作成し、以下のように記述します。
package MT::Shop;
use strict;
use base qw( MT::Object );
__PACKAGE__->install_properties ({
column_defs => {
'id' => 'integer not null auto_increment',
'entry_id' => 'integer not null',
'name' => 'text',
'tel' => 'text',
'address' => 'text',
'enabled' => 'integer',
},
indexes => {
id => 1,
entry_id => 1,
},
defaults => {
'enable' => 0,
},
child_of => 'MT::Entry',
audit => 1,
datasource => 'shop',
primary_key => 'id',
class_type => 'shop',
});
1;
上記の例では、MT::Shop
クラスを MT::Object
クラスから継承し、install_properties
メソッドでオブジェクトのプロパティを定義しています。
各プロパティの意味は以下の通りです。
column_defs
- オブジェクトのカラム定義をハッシュリファレンスで指定します。上記の例では、
id
、entry_id
、name
、tel
、address
、enabled
の6つのカラムを定義しています。 indexes
- インデックスを設定するカラムをハッシュリファレンスで指定します。上記の例では、
id
とentry_id
にインデックスを設定しています。 defaults
- カラムのデフォルト値をハッシュリファレンスで指定します。上記の例では、
enabled
カラムのデフォルト値を0に設定しています。 child_of
- このオブジェクトが属する親オブジェクトを指定します。上記の例では、
MT::Entry
の子オブジェクトとして定義しています。 audit
- オブジェクトの作成日時や更新日時を自動的に管理するかどうかを指定します。
1
を指定すると有効になります。
自動的に管理されるカラムは以下の通りです。created_on
created_by
modified_on
modified_by
datasource
- データベースのテーブル名を指定します。上記の例では、
shop
が指定されているためmt_shop
というテーブル名になります。 primary_key
- プライマリキーとなるカラムを指定します。上記の例では、
id
カラムがプライマリキーになります。 class_type
- オブジェクトのタイプを指定します。上記の例では、
shop
が指定されています。
動作確認
以上で、MT::Shop
オブジェクトの定義は完了です。MTの管理画面でプラグインを有効化すると、データベースに mt_shop
テーブルが作成されます。
独自オブジェクトの操作方法
独自オブジェクトの操作は、他の MT オブジェクトと同様に行います。以下に基本的な操作例を示します。
my $entry_id = 123;
my $shop = MT->model('shop')->load( { entry_id => $entry_id } );
if (!$shop) {
$shop = MT->model('shop')->new;
$shop->entry_id($entry_id);
}
$shop->name('My Shop');
$shop->tel('123-456-7890');
$shop->address('奈良県奈良市西大寺本町12345');
$shop->enabled(1);
$shop->save() or die $shop->errstr();
上記の例では、entry_id
が 123 の MT::Shop
オブジェクトをロードし、存在しない場合は新規作成しています。その後、各カラムに値を設定し、save
メソッドで保存しています。
このようにして、独自オブジェクトを定義し、操作することができます。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
Movable Type システムログ出力ガイド ― MT::App の log メソッドでエラーメッセージを記録する方法
2025.06.03
Movable Type のシステムログにエラーメッセージや各種情報を出力する方法について、MT::App の log メソッドを利用した具体的な実装例を解説します。ログレベル、クラス、カテゴリを指定することにより、出力内容を柔軟に分類・管理できる仕組みを詳述し、管理画面でのログ確認方法やデータベーステーブルでの確認方法も合わせて説明します。
Movable Type プラグインで実現するエラー画面・ログイン画面の出力方法
2025.04.10
Movable Typeプラグイン開発において、エラー画面やログイン画面をどのように出力すべきか、その基本手法を具体的なコード例を交えて解説します。MT::App の show_error および show_login メソッドの利用方法や各オプションの効果を理解することで、プラグインにおけるユーザーインターフェースのカスタマイズが容易になります。
Movable Type プラグインによるユーザーアクションメニュー制御 ― condition設定の実践的解法
2025.04.07
Movable Type プラグインを使用したユーザーアクションメニューの制御方法を解説します。特に、config.yamlでの condition 設定の制限とその回避策について、core_user_actions のオーバーライドによる実践的な解決方法を、具体的なコード例とともに紹介します。
Movable Typeプラグイン入門:MT::Author で実現するロール付与の手法
2025.03.26
本記事では、Movable Type のプラグイン開発において、MT::Author オブジェクトを利用したユーザーへのロール付与手法を詳しく解説します。具体的なコード例とともに、ユーザー、ブログ、ロールの各オブジェクトの取得方法や、add_role メソッドを活用したロール付与処理の流れを紹介。実務に直結する実装ポイントを分かりやすく解説しています。