Movable Typeのコンテンツタイプで登録できるフィールドのうち、ラジオボタンとセレクトボックス、チェックボックスは、選択項目の名前と値を設定することができます。
これらのフィールドをテンプレートで出力する際に、選択した項目の名前と値を取得する方法を試してみます。
設定方法
ラジオボタンやセレクトボックス、チェックボックスのフィールドは、フィールド登録時に以下のように項目の名前と値を設定して使用します。
管理画面上では、「名前」で設定したテキストで表示されます。
コンテンツフィールドを表示する場合、通常はMTContentFieldValueを使います。
<h3>ラジオボタン</h3> <mt:ContentField content_field="ラジオボタン"> <p><mt:ContentFieldValue></p> </mt:ContentField> <h3>セレクトボックス</h3> <mt:ContentField content_field="セレクトボックス"> <p><mt:ContentFieldValue></p> </mt:ContentField> <h3>チェックボックス</h3> <mt:ContentField content_field="チェックボックス"> <p><mt:ContentFieldValue></p> </mt:ContentField>
再構築を行うと、「値」で設定したテキストが表示されました。
<h3>ラジオボタン</h3> <p>a</p> <h3>セレクトボックス</h3> <p>a</p> <h3>チェックボックス</h3> <p>a</p>
ラジオボタンとセレクトボックス、チェックボックスのフィールドの場合、MTContentFieldのブロック内で「__key__」や「__value__」の変数を使うことで、「名前」と「値」で設定したテキストを取得することができます。
<h3>ラジオボタン</h3> <mt:ContentField content_field="ラジオボタン"> <p>__key__:<mt:Var name="__key__"></p> <p>__value__:<mt:Var name="__value__"></p> <p>ContentFieldValue:<mt:ContentFieldValue></p> </mt:ContentField> <h3>セレクトボックス</h3> <mt:ContentField content_field="セレクトボックス"> <p>__key__:<mt:Var name="__key__"></p> <p>__value__:<mt:Var name="__value__"></p> <p>ContentFieldValue:<mt:ContentFieldValue></p> </mt:ContentField> <h3>チェックボックス</h3> <mt:ContentField content_field="チェックボックス"> <p>__key__:<mt:Var name="__key__"></p> <p>__value__:<mt:Var name="__value__"></p> <p>ContentFieldValue:<mt:ContentFieldValue></p> </mt:ContentField>
再構築を行うと、「__key__」で「名前」、「__value__」で「値」のテキストを取得できました。
「__value__」で取得できる値は、MTContentFieldValueと同じになるようです。
<h3>ラジオボタン</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p> <h3>セレクトボックス</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p> <h3>チェックボックス</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p>
セレクトボックスやチェックボックスなど複数選択可能なフィールドで複数選択した場合、MTContentFieldの中でループ処理になるようです。
複数選択可能なフィールドで複数選択した上で再構築を行うと、以下のように出力されました。
<h3>ラジオボタン</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p> <h3>セレクトボックス</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p> <p>__key__:名前B</p> <p>__value__:b</p> <p>ContentFieldValue:b</p> <h3>チェックボックス</h3> <p>__key__:名前A</p> <p>__value__:a</p> <p>ContentFieldValue:a</p> <p>__key__:名前B</p> <p>__value__:b</p> <p>ContentFieldValue:b</p>
コメントが承認されるまで時間がかかります。