&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で取得できます。~

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら