アーカイブマッピングにコンテンツフィールドの値を指定する方法

はじめに

コンテンツデータのアーカイブマッピングに、コンテンツフィールドの値を指定する方法です。

コンテンツデータに設定されている、特定のコンテンツタイプの値を設定したい場合に使えます。

カスタムフィールドでは、アーカイブテンプレートのアーカイブマッピングに設定しているテンプレートで、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>
新着記事