MT LiveでMovable Typeの疑問を聞いちゃおう!!(保存されたオブジェクトのカスタムフィールドが画像であることを確認する方法) - uehatsu's tech blog

ちょっと案件で分からない事があったのでMT Liveにお邪魔しています。MT Liveとは「シックス・アパートのエンジニアや、Movable Type に詳しい人たちが、コワーキングスペースに集まります。MTについてちょっと質問したい、実際に画面見せたり、話したりしながら教えてもらいたい、という方はぜひお立ち寄りください。(Facebookのイベントページより)」というイベント。毎月第2・第4水曜日にやってます、もしよろしければ。

MT Live 紹介ページ(シックス・アパート ブログ)

で、今日聞きたかったことは「Movable Typeであるオブジェクトを保存する時に、そのオブジェクトに紐付けられているカスタムフィールドが画像であった場合、その画像にたいしてゴニョゴニョする」というもの。

まず自分でやって失敗した方法がこちら。

1. pre_saveかpost_saveでフック

2. $obj->meta()でmeta情報のhashを取得

3. meta情報のhashからカスタムフィールドのbasenameを取得(hashのkeyが"field.hogehoge")となる

4. MT::Metaのmetadata_by_nameでmeta情報を取得

my $field = "field." . $meta_basename;
my $class = MT->model('entry');
my $meta = MT::Meta->metadata_by_name( $class, $field );

5. meta情報のtypeを取得

my $type = $meta->{type};

ただしこれでtypeをとると"vclob"とだけ返ってきて画像かどうかはわからない。残念。

で、今日MT Liveで高山さんに聞いたところ4.以降をこうすると良いと聞く。

4. CustomFields::Field からカスタムフィールド情報を取得

my ($field_obj) = MT->model('field')->search({
blog_id => $blog_id,
basename => $meta_basename,
});

5. カスタムフィールド情報のtypeを取得

my $type = $field_obj->type();

これで$typeに"image"が格納されていたら、このカスタムフィールドは画像!!

自分で悩んでいたら解決できませんでした。

結論:MT Liveで疑問を解決!!

皆さんも是非!!!

Movable Type 6 本格活用ガイドブック (Web Designing BOOKS)
Movable Type 6 本格活用ガイドブック (Web Designing BOOKS) 藤本 壱 柳谷 真志 奥脇 知宏 シックス・アパート株式会社

マイナビ 2013-11-30
売り上げランキング : 133328


Amazonで詳しく見る
by G-Tools
 
カテゴリ

Who is uehatsu?

uehatsu

アーカイブ

Facebook page