Movable Type.net

MTタグ逆引き辞典

カスタムフィールドの条件を2つ組み合わせたい場合

mt:Pagesやmt:Entriesではカスタムフィールドの値によって表示をコントロールする場合がありますが、今回は2つのカスタムフィールドの値を使う方法をご紹介します。

テーマPublicOrganizationでは、カスタムフィールドでフッターメニューにのみ表示、という機能が実装されており、ヘッダーメニューでは以下のようにフッターメニューにのみ表示がオフの時に表示する(field:footer_menu="0")という記述があります。

 
    <mt:Pages no_folder="1" sort_order="ascend" field:footer_menu="0">
        <li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
    </mt:Pages>

これはmt:Pagesでウェブページ一覧を表示するときの条件になりますが、カスタムフィールドは2つの条件を同時に指定できないため、少し工夫が必要になります。

テンプレート記述例

今回はヘッダーとフッターのメニューどちらにも表示しない、といったケースを実装してみます。

まず、以下の設定でカスタムフィールドを作成します。

  • システムオブジェクト:ウェブページ
  • 名前:メニューに表示させない
  • タイプ:チェックボックス
  • 必須:チェックを入れない
  • 既定値:チェックを入れない
  • 識別子:nomenu

続いてheader-menuモジュール内の前述の部分(3箇所)を以下のように変更します。

 
    <mt:Pages no_folder="1" sort_order="ascend" field:footer_menu="0">
      <mt:If tag="CustomFieldValue" identifier="nomenu" ne="1">
        <li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
      </mt:If>
    </mt:Pages>

これはmt:Ifタグで、上記のカスタムフィールドの値が1ではない(チェックをいれない)場合に実行する記述になります。

これにより、mt:Pagesでフッターメニューにのみ表示するがオフでフィルタリングされた後にさらにもう一つの条件でフィルタリングして出力しています。

使用したMTタグはこちら

Movable Type.net は無料トライアルが可能です。
Web制作者の方で、デモや評価利用をご希望の場合は、制作者向け評価ライセンスをご利用ください。

無料トライアル 資料ダウンロード 制作者向け評価ライセンス