記事ごとに違うテンプレート(カスタムフィールド)

カスタムフィールドの設定

 

1.ブログメニューの [設定] より [カスタムフィールド] を選択します。
2.カスタムフィールド管理画面で [フィールドを作成] をクリックします。

 

custom_field_create-01.png

3.ブログ記事にフィールドを追加するので [システムオブジェクト] から [ブログ記事] を選択します。

 

custom_field_create-02.png

4.名前や説明、テンプレートタグは任意のものを入力してください。このサンプルでは以下のように設定しました。

 

custom_field_create-03.pngのサムネール画像

4.[保存] ボタンをクリックして、フィールドの追加作業は完了です。ブログ記事の管理画面をチェックしてみましょう。

 

フィールドの設定で [フィールドに値は必須ですか?] をチェックしていない場合、ブログ記事作成・編集画面の [表示オプション] で設定するようにします。

 

作成したフィールドは、以下のタグで値を出力することができます。ブログ記事に追加したので、MTEntries のコンテキスト内 (MTEntries, ブログ記事アーカイブテンプレート内) で使用する必要があります。

<$MTEntryTemplate$>

 

テンプレートを選択する仕組み

 

ブログ記事ごとにテンプレートを選択するフィールドが用意できたら、テンプレートも対応させます。テンプレートを選択できるようにするには、いくつもの方法が考えられますが、今回は簡単な方法で実現してみます。仕組みはこのようになります。

 

3つのテンプレートモジュール

■テンプレート A

<p>テンプレート A を使用して『<$MTEntryTitle$>』を出力しました。</p>

 

■テンプレート B

<p>テンプレート B を使用して『<$MTEntryTitle$>』を出力しました。</p>

 

 ■テンプレート C

<p>テンプレート C を使用して『<$MTEntryTitle$>』を出力しました。</p>

 

テンプレートの内容は単純ですが、どのテンプレートを利用して出力したのかがわかるようにしています。

 

 

ブログ記事テンプレート

 

<MTSetVarBlock name="entry_template_name"><$MTEntryTemplate$></MTSetVarBlock>

<MTIf name="entry_template_name" eq="テンプレート A">
<MTInclude module="テンプレート A">
<MTElseIf eq="テンプレート B">
    <MTInclude module="テンプレート B">
    <MTElse>
        <MTInclude module="テンプレート C">
</MTIf>

ただし、私の環境では「MTElseIf」がきかなかったため

今回急場しのぎですが、

<MTSetVarBlock name="entry_template_name"><$MTEntryTemplate$></MTSetVarBlock>

<MTIf name="entry_template_name" eq="テンプレート A">
<MTInclude module="テンプレート A">
</MTIf>

<MTIf name="entry_template_name" eq="テンプレート B">
<MTInclude module="テンプレート B">
</MTIf>

<MTIf name="entry_template_name" eq="テンプレート C">
<MTInclude module="テンプレート C">
</MTIf>

と書きました。