expexp.jp

Movable Type

【Movable Type】コンテンツタイプのデータを指定個数毎に区切る

フッターなどにコンテンツタイプのデータを5個ずつ並べたい!という時に役立ちます。

コードサンプル

<mt:Contents content_type="service" limit="XX" unique="1">
  // hogehoge
</mt:Contents>

実際に使うときは↓

<mt:Contents content_type="service" limit="5" unique="1">
  <mt:ContentsHeader><ul></mt:ContentsHeader>
    <li><mt:ContentField content_field="タイトル"><$MTContentFieldValue$></mt:ContentField></li>
  <mt:ContentsFooter></ul></mt:ContentsFooter>
</mt:Contents>

<mt:Contents content_type="service" limit="5" unique="1">
  <mt:ContentsHeader><ul></mt:ContentsHeader>
    <li><mt:ContentField content_field="タイトル"><$MTContentFieldValue$></mt:ContentField></li>
  <mt:ContentsFooter></ul></mt:ContentsFooter>
</mt:Contents>

...

上のコードだとserviceのコンテンツタイプのデータを5個ずつのリストを2つ作ります。通常ならこの2つのリストは同じアイテムのリストになってしまいますが、モディファイアのuniqueが設定されていると一度使われたアイテムは除外され、別々のリストして表示されます。

同じコードを並べているだけなので、リストの数が多い場合はSetVarTemplateを使ってMTForで繰り返す使い方もできます。

<mt:SetVarTemplate name="service_list">
  <mt:Contents content_type="service" limit="5" unique="1">
    <mt:ContentsHeader><ul></mt:ContentsHeader>
      <li><mt:ContentField content_field="タイトル"><$MTContentFieldValue$></mt:ContentField></li>
    <mt:ContentsFooter></ul></mt:ContentsFooter>
  </mt:Contents>
</mt:SetVarTemplate>

<mt:For var="x" form="0" to="2">
  <$mt:Var name="service_list"$>
</mt:For>