【Movable Type】コンテンツタイプをカンマ区切りのIDで絞り込む

Movable Type

Movable Typeのコンテンツタイプで、特定のIDのデータを出力したい場合、モディファイアでid=Nと指定すれば出来るんですが、これ単一のデータしか抽出することが出来ず、field:hoge=XXもありますがID抽出とはまた違うので、別な方法を紹介します。

先にも書いた通り通常の<mt:Contents id="N">では単一のコンテンツデータ抽出なので、12,15,99のような複数のIDを指定したコンテンツデータの抽出は出来ません(執筆時現在)。であればカンマで区切った分の<mt:Contetns id="N">でコンテンツデータを出力する方法です。

コード例

setvarなどへsplitで配列化、代入してある前提です。変数名はcontentsにしています。

<mt:If name="contents">
  <ul>
    <mt:Loop name="contents">
      <mt:If name="__value__">
        <mt:Contents content_type="hogehoge" id="$__value__">
          <li>
            <a href="<$mt:ContentPermalink$>"><$mt:ContentLabel$></a>
          </li>
        </mt:Contents>
      </mt:If>
    </mt:Loop>
  </ul>
</mt:If>

2つ入っているmt:Ifは必須ではないです。どちらもデータの有無を確認しています。

<mt:If name="contents">

1つ目のmt:Ifで変数contentsに配列データが入っていれば表示するようにしています。あとはmt:Loopで変数contentsをindex分だけ繰り返します。

<mt:If name="__value__">

2つ目のmt:Ifでは、カンマ区切りで繰り返される変数コンテンツでちゃんと値が入っているかをチェックしています。

<mt:Contents content_type="hogehoge" id="$__value__">

ここのmt:Contentsのモディファイアで、カンマ区切りで出力されてくるIDを指定しています。

これで単一ではなく複数のコンテンツタイプを絞り込むことが出来ます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*