Movable Typeで構築したサイトのコンテンツフィールド名を変更したいということがあったのですが、既存の登録データに影響が出ないかどうかが分からなかったので、試してみた結果と変更の流れについてメモ。
サンプルコード
以下のフィールド内容でコンテンツタイプを作成します。
- フィールドの種類:テキスト
- 名前:商品価格(税抜)
コンテンツタイプの一覧と詳細を出力するテンプレートを用意します。
インデックステンプレート(一覧)
<mt:Contents content_type="XXXXX"> <div> <p><mt:ContentLabel></p> <mt:ContentField content_field="商品価格(税抜)"> <p><mt:ContentFieldValue></p> </mt:ContentField> </div> </mt:Contents>
コンテンツタイプテンプレート(詳細)
<p><mt:ContentLabel></p> <mt:ContentField content_field="商品価格(税抜)"> <p><mt:ContentFieldValue></p> </mt:ContentField>
コンテンツデータを登録したうえで再構築を行ってみます。
それぞれ以下の内容で出力を確認できました。
インデックステンプレート(一覧)
<div> <p>商品B</p> <p>1000</p> </div> <div> <p>商品A</p> <p>500円</p> </div>
コンテンツタイプテンプレート(詳細)
<p>商品A</p> <p>500円</p>
これで準備ができたので、実際にコンテンツフィールド名の変更を試してみます。
テキストのコンテンツフィールド名を、「商品価格(税抜)」から「商品価格(税込)」に変更してみます。
変更を保存後に登録しているコンテンツデータを確認してみましたが、フィールド名が「商品価格(税込)」に変更されたうえで、入力値はもともと入力していた内容が表示されました。
ただ、テンプレート内に記述されているコンテンツフィールド名は変更前のままなので、再構築を行うとエラーになります。
先ほど作成したテンプレートをそれぞれ修正してみます。
インデックステンプレート(一覧)
<mt:Contents content_type="XXXXX"> <div> <p><a href="<mt:ContentPermalink>"><mt:ContentLabel></a></p> <mt:ContentField content_field="商品価格(税込)"> <p><mt:ContentFieldValue></p> </mt:ContentField> </div> </mt:Contents>
コンテンツタイプテンプレート(詳細)
<p><mt:ContentLabel></p> <mt:ContentField content_field="商品価格(税込)"> <p><mt:ContentFieldValue></p> </mt:ContentField>
これで再構築を行えるようになりました。
あまりコンテンツフィールド名を変更するということはないかもしれませんが、共通管理用のテンプレートを用意したうえで、各フィールド名を変数で管理しておくと1箇所の変更のみで済むので楽かもしれません。
コメントが承認されるまで時間がかかります。