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)

つまり、オプション値の文字列がそのまま保持されている。

この為、構築後に選択系カスタムフィールドのオプション値の変更を行う際は、既存のオプションを削ると既存の入力値を修正する必要あるが、オプション値を追加する場合は入力値の修正は不要。

関連するタグ

PowerCMS5.13