- バックアップ一覧
- バックアップ を表示
- Movable Type RightFieldsプラグインの拡張データ読み出し は削除されています。
&pgid();
#contents
MT(MovableType)の[[RightFieldsプラグイン>http://www.staggernation.com/mtplugins/RightFields/]]で拡張(追加)した項目の読み出しを行いたくて方法を調べてみました(ググってみたのですが、関連情報もAPIマニュアルもみつけられなかったので&sad;RightFieldsプラグインのコードを直接調べて見つけた方法です。オフィシャルな方法ではないかもしれません)
以下では、ブログ内の各エントリーに対して拡張したデータ項目を読み出して配列にする方法を記載します。
まず、最初にライブラリパスの指定とMT、RightFieldsクラスをロードします。
use lib qw(lib plugins/RightFields/lib);
use MT;
use RightFields qw( load_plugindata save_plugindata config_key fld_name
mt_fields mt_field_order new_obj );
MTクラスはエントリー情報を読み出すために、RightFiedldsクラスは読み出したエントリー情報が持つ拡張データ項目のデータを読み出すAPIを利用するためにロードしてします。
次に、MTクラスを利用してMTのエントリー情報を配列に取得します。
my $mt = MT->new or "cannot load mt";
my @entries = MT::Entry->load(
{ blog_id => 1 },
{
sort => 'created_on',
direction => 'descend',
}
);
MTクラスのオブジェクトを作成して、MT::*クラスのクラスメソッドを使えるようにします。(MTクラスはnewする時にmt-config.cgiを読み込んで初期設定を行い、移行、MT API(MT::*クラス) を利用できるようにします。詳しくは[[Movable Type オブジェクト・リファレンス>http://www.sixapart.jp/movabletype/manual/object_reference/]]を参照のこと)~
これでMT::Entryのloadメソッドが使えるようになります。
MT::Entry->load()はパラメータに一致するエントリー情報(=MT::Entryオブジェクト)を配列で返します。上のコードでは、blog_id = 1のブログのエントリー情報を作成日(created_on)の逆順(descend)で取り出すパラメータを指定しています。
次に、RightFieldsクラスのload_plugindataメソッドを使って拡張データ項目に関するコンフィギュレーション情報を取得します。
my $cfg = load_plugindata(config_key(1, 'extra'));
load_plugindataメソッドにはRightFieldsクラスのconfig_keyメソッドの返り値をkey文字列として与えます。config_keyメソッドにはブログID(=この例では1)と拡張データ項目であることを示すextraを指定します。
最後に、各エントリー情報に対して、RightFieldsの拡張データオブジェクトを作成して、読み出し、配列作成を行います。
my @result;
foreach my $entry (@entries) {
my $rf_obj = new_obj($cfg, $entry->id);
my $name = $rf_obj->name();
push(@result, $name);
}
foreach文で各エントリー情報(MT::Entryオブジェクト)単位にループさせています。~
ループ内ではRightFieldsクラスのnew_objメソッドに$cfgとエントリーIDを与えて、該当するエントリーの拡張データを保持する拡張データオブジェクトを作成します。エントリーIDはMT::Entryオブジェクトのgetterを使って$entry->idで取得できます。~