「フィールドを追加する」とは?
今回のテーマである「フィールドを追加する」とは、MTのブログ記事編集画面に入力欄を追加するという意味ではなく(関係はしますが)、MTが内部で持っている「ブログ記事」や「ブログ」のデータを拡張するという意味になります。
今回はプラグインを作成する方向けの話です。
MT::EntryやMT::Blogへ追加する場合
MTの場合フィールドの追加はライブラリがうまく面倒を見てくれるので、例えばMT::Entryへ追加をする場合は config.yaml へ以下のように書くだけで「extended_field」を追加することができます。
name: AddField
version: 1
schema_version: 1
object_types:
entry:
extended_field: string(255)
MT::Authorへ追加する場合の問題点
また前述の流れでいくと、MT::Authorへも以下のような config.yaml で追加ができそうなのですが、これはエラーとなってしまいます。
name: AddField
version: 2
schema_version: 2
object_types:
entry:
extended_field: string(255)
author:
extended_field: string(255)
どうやらデータベースへ変更を反映させる前に、変更済みとしてデータを読み取ろうとしてエラーになってしまうようです。
MT::Authorへフィールドを追加する
この問題についてはupgrade_functionsを適切に設定して、プラグイン毎にごにょごにょやれば解決できるのではないかと思いますが、プラグインを書く度にそのような処理をするのも面倒だろうということで、これを解決するプラグインを作りました。
これをダウンロードして plugins ディレクトリへアップロードしてください。
ExtendibleAuthorField.pl
前節でエラーになった config.yaml で、フィールドの追加ができるようになります。
コメントする