ちょっと案件で分からない事があったのでMT Liveにお邪魔しています。MT Liveとは「シックス・アパートのエンジニアや、Movable Type に詳しい人たちが、コワーキングスペースに集まります。
で、今日聞きたかったことは「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) | |
藤本 壱 柳谷 真志 奥脇 知宏 シックス・アパート株式会社 マイナビ 2013-11-30 売り上げランキング : 133328 Amazonで詳しく見る by G-Tools |