Blog

【MovableType】MoreCustomFieldsでラジオボタンをチェックボックスに変更する

2013.11.26Cat:MovableType 役員

MTでサイトを運用しており、例えば以下のように




1

 

エリアを選択させるラジオボタンのリストがあったとして、

途中で複数選択にしてほしいという要望はよくありそうで、実際に起こってしまったのでその対応方法。

要は



2

のようにしたいというもの。

単純にラジオボタンのフィールドを削除して新しくチェックボックスグループを追加すれば済む話だが

入力済みの記事がたくさんある場合は打ち直しがとてつもなく大変なため、DBを操作して無理やりチェックボックスグループに変更する方法。

使うのは以下2つのテーブル

 

■mt_fieldテーブル

+——————-+————–+——+—–+———+—————-+

| Field             | Type         | Null | Key | Default | Extra          |

+——————-+————–+——+—–+———+—————-+

| field_id          | int(11)      | NO   | PRI | NULL    | auto_increment |

| field_basename    | varchar(255) | YES  | MUL | NULL    |                |

| field_blog_id     | int(11)      | YES  | MUL | NULL    |                |

| field_default     | mediumtext   | YES  |     | NULL    |                |

| field_description | mediumtext   | YES  |     | NULL    |                |

| field_name        | varchar(255) | NO   | MUL | NULL    |                |

| field_obj_type    | varchar(50)  | NO   | MUL | NULL    |                |

| field_options     | mediumtext   | YES  |     | NULL    |                |

| field_required    | tinyint(4)   | YES  |     | NULL    |                |

| field_tag         | varchar(255) | NO   |     | NULL    |                |

| field_type        | varchar(50)  | NO   | MUL | NULL    |                |

+——————-+————–+——+—–+———+—————-+

 

■mt_entry_metaテーブル

+————————–+————–+——+—–+———+——-+

| Field                    | Type         | Null | Key | Default | Extra |

+————————–+————–+——+—–+———+——-+

| entry_meta_entry_id      | int(11)      | NO   | PRI | NULL    |       |

| entry_meta_type          | varchar(75)  | NO   | PRI | NULL    |       |

| entry_meta_vchar         | varchar(255) | YES  |     | NULL    |       |

| entry_meta_vchar_idx     | varchar(255) | YES  |     | NULL    |       |

| entry_meta_vdatetime     | datetime     | YES  |     | NULL    |       |

| entry_meta_vdatetime_idx | datetime     | YES  |     | NULL    |       |

| entry_meta_vinteger      | int(11)      | YES  |     | NULL    |       |

| entry_meta_vinteger_idx  | int(11)      | YES  |     | NULL    |       |

| entry_meta_vfloat        | float        | YES  |     | NULL    |       |

| entry_meta_vfloat_idx    | float        | YES  |     | NULL    |       |

| entry_meta_vblob         | mediumblob   | YES  |     | NULL    |       |

| entry_meta_vclob         | mediumtext   | YES  |     | NULL    |       |

+————————–+————–+——+—–+———+——-+

 

まずカスタムフィールド自体のIDを用意する。

/mt.cgi?__mode=view&_type=field&blog_id=17&id=906&saved=1&saved_added=1

例えばこのようなURLの場合、906がIDとなる。

これを使い、

などのようにSELECT文を実行して項目を確認。

field_typeがradioになっていることを確認し

を実行してfield_typeをcheckbox_groupに変更する。

次に該当カスタムフィールドのベースネームを確認しておき、今回の場合だと

などのようにして現在該当カスタムフィールドを使っている記事を確認する。

ラジオボタンのリストはカンマ区切りでentry_meta_vchar_idxカラムにデータが入っているが

チェックボックスリストはentry_meta_vcharカラムを使用するため

を実行して entry_meta_vcharにentry_meta_vchar_idxを入れてします。

checkbox_groupはentry_meta_vchar_idxカラムを使用しないため、値はそのままとっておいてOK。

 

 

Author Profile

hoshino

ECのことを中心に書きたいと思います。
ネタが無いときはプログラムやデザインのことも書きます。

» 投稿一覧
  • Launch Cart次世代ECサイト構築システム 初期月額無料
  • LaunchMovie ECに特化した動画制作サービス

Archive

ページTOPへ