PowerCMSでの選択系カスタムフィールドのオプションが変更された場合の、既存の入力値への影響
今までこの周りの仕組みはぼんやりと覚えていて、案件とかで質問来るたびに「あれ、なんだっけ。。。」となっていたのでいい加減メモる。
以降、検証の過程を踏まえながら展開する。
例えば、CMS管理画面上より、対象のウェブサイト/ブログに、次の様にCFを定義する。
※パラメーターの記載の無いものはデフォルト値のまま。
| 名前 | システムオブジェクト | 種類 | オプション | ベースネーム | テンプレートタグ |
| 検証用ラジオボタン | 記事 | ラジオボタン | オプションA,オプションB | cf_entry_test_radio | (ベースネームと同じ) |
| 検証用ドロップダウン | 記事 | ドロップダウン | オプションあ,オプションい | cf_entry_test_select | (ベースネームと同じ) |
| 検証用ドロップダウン(複数選択) | 記事 | ドロップダウン(複数選択) | オプションx,オプションy,オプションz | cf_entry_test_select_multi | (ベースネームと同じ) |
| 検証用チェックボックス(複数選択) | 記事 | チェックボックス(複数選択) | オプションa,オプションb,オプションc | cf_entry_test_check_multi | (ベースネームと同じ) |
次に対象の記事の編集画面を開き、各CFに対応する入力欄の選択値を次の様に選択し、保存する。
| 名前 | 入力値 |
| 検証用ラジオボタン | オプションB |
| 検証用ドロップダウン | オプションい |
| 検証用ドロップダウン(複数選択) | オプションx,オプションz |
| 検証用チェックボックス(複数選択) | オプションb,オプションc |
その後CMSのDBのmt_entry_metaテーブルを除くと、先ほどの入力欄で選択した値が次のようにレコードとして登録されてる。
※カラムは必要な個所のみ抜粋。
| (対応するCFの名前) | entry_meta_type | entry_meta_vchar | entry_meta_vchar_idx |
| 検証用ラジオボタン | field.cf_entry_test_radio | (NULL) | オプションB |
| 検証用ドロップダウン | field.cf_entry_test_select | (NULL) | オプションい |
| 検証用ドロップダウン(複数選択) | field.cf_entry_test_select_multi | オプションx,オプションz | (NULL) |
| 検証用チェックボックス(複数選択) | field.cf_entry_test_check_multi | オプションb,オプションc | (NULL) |
つまり、オプション値の文字列がそのまま保持されている。
この為、構築後に選択系カスタムフィールドのオプション値の変更を行う際は、既存のオプションを削ると既存の入力値を修正する必要あるが、オプション値を追加する場合は入力値の修正は不要。