MT::Authorへフィールドを追加する

MT-column > Tips
| | コメント(0) | トラックバック(0)

「フィールドを追加する」とは?

今回のテーマである「フィールドを追加する」とは、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 で、フィールドの追加ができるようになります。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT::Authorへフィールドを追加する

このブログ記事に対するトラックバックURL: https://tec.toi-planning.net/mtos/mt-tb.cgi/560

コメントする

Created by ToI企画
Powered by Movable Type 5.2.2