MovableType関連

提供: KZK memo wiki
移動: 案内検索

MTプラグイン

MTオブジェクト

MovableTypeのプログラムを書く際にはPerlを利用するため、 記述に関してある程度知識が必要。

ただし、現時点で僕はPerlを書いたことがないのでこれが初Perlとなる。 調べながら記述したため非効率な書き方などが多々あるかも知れないので注意。 気付いたら直すこと。

エントリ

前提:MTに登録されている記事をエントリと呼ぶ。

既存のエントリを取得し、作者(Author)やカスタムフィールド(CustomFields)、添付ファイル(Asset)の情報を取得する。

Entryを取得する

my $blog_id = 1;
my @entries = MT::Entry->load(	{
					blog_id => $blog_id
				} ,
				{
					range_incl => { authored_on => 1 },
					sort => 'authored_on',
					direction => 'ascend'
				});
 
foreach my @entry ( @entries )
{
	# 各記事に対する処理を記述する。
	# 例えば
	# 記事の内容を処理
	# カスタムフィールドの値を処理
	# カテゴリの値を処理
	# 作者の情報を処理
	# 添付ファイルの処理
	# 等々
 
	# --------------------
 
	print $entry->title."\n";	# 記事タイトル表示
	print $text."\n";		# 記事本文表示
}

@entriesMT::Entry->loadによって抽出された、Entryの配列が格納される。

記事毎に処理するため、foreachを利用して@entryに対して処理を記述する。

Authorの情報を取得する

my $author = $entry->author;
print $author->name."\n";		# 作者名表示
print $author->emal."\n";		# 作者のメールアドレス表示


CustomFieldsの情報を取得する

カスタムフィールドは'CustomFields::Util::get_meta'を利用して取得する。

my $customfields = CustomFields::Util::get_meta( $entry );
 
while ( my($basename, $value) = each %$customfields)
{
	print $basename.":".$value."\n";
}

Assetsの情報を取得する

Entryと紐付く、Assetを取得し、@assetsに配列として格納する。

my @assets = MT::Asset->load(
				{ class=>"image"},
				{
					join => MT::ObjectAsset->join_on(
						'asset_id',
						{
							object_ds => MT::Entry->datasource,
							object_id => $entry->id
						}),
				});

@assets は、Entryに関連する全てのAssetを格納した配列であり、各Assetに対して処理を行う場合は以下のサンプルのようにforeachを利用して各Asset($asset)に対して処理を行うことが出来る。

foreach my $asset (@assets)
{
	#添付ファイル名を出力する。
	print $asset->file_name."\n";
}

また、$assetの種類を判定することも出来る。例は次の通り。

foreach my $asset (@assets)
{
	print $asset->file_name;
 
	#$asset->class で添付ファイルの種類を取得する。
	if ($asset->class eq 'image')
	{
		print "---->画像ファイルです。";
	}
 
	print "\n";
}