2008年02月01日

MT4.1 CustomFields メモ

Movable Typeが4.1になって標準でCustomFieldsがサポートされるようになった。
めでたい。
このCustomFieldsのおかげでデータベース色の強い使い方をする場面がいっそう増えそうなんだけど、そうなるとイニシャルで多めのデータ入力を要求される場面も増えそうだ。しかしいかんせん4.1の動作がちょっと重い。20個くらいのエントリーを入れろと言われただけでも辛い。自動化して一気に片付けたい。
というわけで以下、Movable Type Perl APIでCustomFieldsを扱うメモ。
まだ正式なドキュメントを見つけていないので、ただしい使い方なのかは不明。勝手に試してみただけ。

addons/Commercial.pack/lib/CustomFields/XMLRPCServer.pm
がちょうどいいサンプルになっている。

例えば、
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use lib qw(lib extlib);
use Data::Dumper;
use MT::Entry;
my $q = new CGI;
my @keywords = $q->keywords;
my $id = shift @keywords;
my $entry = MT::Entry->load($id);
print $q->header(
-type => 'text/plain',
-charset => 'UTF-8',
);
print Dumper $entry;
てな感じでエントリーをdumpするだけのCGIで4.1のエントリーを読むと、CustomFieldsで付け足したデータはシリアライズされていてそのままは読めない。
いったんentryをロードしたあとにget_metaを呼ぶと、アンシリアライズされて読めるようになる。こんな感じ。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use lib qw(lib extlib addons/Commercial.pack/lib);
use Data::Dumper;
use MT::Entry;
use CustomFields::Util qw( get_meta save_meta );
my $q = new CGI;
my @keywords = $q->keywords;
my $id = shift @keywords;
my $entry = MT::Entry->load($id);
my $meta = get_meta($entry);
print $q->header(
-type => 'text/plain',
-charset => 'UTF-8',
);
print Dumper $entry;

で、読むだけならべつにuse CustomFields::Utilしなくても
my $entry = MT::Entry->load($id);
my $meta = $entry->meta('customfields');
ってやるだけで読めるようになるみたいだ。

ふむふむ。

Posted by jiro at 2008年02月01日 15:08 | トラックバック (0)
コメント
コメントする









名前、アドレスを登録しますか?