こんにちは、森です
以前、Movable Typeのカスタマイズをしているとき、カスタムフィールドの種類を変更したい、ということがありました。カスタムフィールドを作成しなおせば良いのですが、既にデータが入っていたりすると面倒です。
そこで、データベースを直接いじることで、カスタムフィールドの種類を変更しました。
まず、phpmyadminなどでデータベースにアクセスし、mt_field のテーブルを表示します。mt_fieldは以下のような構造になっています。
| field_basename | ベースネーム |
|---|---|
| field_blog_id | ブログのID |
| field_default | 既定値 |
| field_description | 説明 |
| field_name | 名前 |
| field_obj_type | システムオブジェクト |
| field_options | オプション値 |
| field_required | 必須? |
| field_tag | テンプレートタグ |
| field_type | 種類 |
カスタムフィールドの種類を変更するには「field_type」を変更すれば良いのです。
field_typeに入る値は以下の通りです。
| text | テキスト |
|---|---|
| textarea | テキスト複数行 |
| checkbox | チェックボックス |
| url | URL |
| datetime | 日付と時刻 |
| select | ドロップダウン |
| radio | ラジオボタン |
| embed | 埋め込みオブジェクト |
| asset | アイテム |
| asset.audio | オーディオ |
| asset.video | ビデオ |
| asset.image | 画像 |
ただし、種類を変更したフィールドに入力していた値が、消えてしまう場合もあります。
「テキスト」から「URL」など、データ型が違う種類に変更すると消えてしまうようです。
しかしその場合は、すぐに「テキスト」に戻せば、入力していた値も戻ります。
使えるシーンは限られてしまいますが、
テキスト⇔テキスト複数行 といった変更の際には使える方法です。

