STERFIELD

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

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

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のことを中心に書きたいと思います。 ネタが無いときはプログラムやデザインのことも書きます。

SHARE

合わせて読みたい