アーカイブマッピングにコンテンツフィールドの値を指定する方法
はじめに
コンテンツデータのアーカイブマッピングに、コンテンツフィールドの値を指定する方法です。
コンテンツデータに設定されている、特定のコンテンツタイプの値を設定したい場合に使えます。
カスタムフィールドでは、アーカイブテンプレートのアーカイブマッピングに設定しているテンプレートで、functionタグをBlockタグなしで使用できますが、コンテンツタイプでは、コンテンツフィールドの値の取得するにBlockタグが必要です。
サンプルテンプレート
ニュースのコンテンツデータから、カテゴリ「エリア」「業種」のCategoryBaseNameをパスに設定するテンプレートです。
ニュースのアーカイブテンプレートのアーカイブマッピングから、「カスタム」を選択し、アーカイブマッピング用に作成したテンプレートモジュールを設定します。
<mt:include module="archive_mapping">
テンプレートモジュールには、MTContentIDを変数にし、MTContentsから指定のIDでコンテンツを読み込み、コンテンツフィールドの値を取得します。
MTForタグで、不要な改行やスペースを削除するのを忘れないでください。
<mt:For regex_replace="/^[\ \t\r\n]+/mg","">
<mt:ContentID setvar="id">
<mt:Contents content_type="ニュース" id="$id">
<mt:ContentField content_field="エリア"><mt:CategoryBaseName setvar="name01"></mt:ContentField>
<mt:ContentField content_field="業種"><mt:CategoryBaseName setvar="name02"></mt:ContentField>
</mt:Contents>
<mt:ContentIdentifier>/world/<mt:Var name="name01">/<mt:Var name="name02">.html
</mt:For>
これでは動きません。カスタムフィールドとは挙動が異なるようです。
<mt:For regex_replace="/^[\ \t\r\n]+/mg","">
<mt:ContentField content_field="エリア"><mt:CategoryBaseName setvar="name01"></mt:ContentField>
<mt:ContentField content_field="業種"><mt:CategoryBaseName setvar="name02"></mt:ContentField>
<mt:ContentIdentifier>/world/<mt:Var name="name01">/<mt:Var name="name02">.html
</mt:For>