Movable Type で 2ページ以上あるフォルダだけページリストを表示するカスタマイズ

Movable Type で、任意のフォルダ内にページが 2ページ以上あるときだけ、そのフォルダ内のページをリストアップするカスタマイズです。 これだけではあまりピンとこないし、初歩的な内容かもしれませんが、小規模なサイトであれば意外と利用シーンは多いような気がします。 例えば、以下のような場合、「ご購入方法(purchase)」というフォルダだけ、そのフォルダ内のページリスト(「ご購入方法」と「...

Movable Type で、任意のフォルダ内にページが 2ページ以上あるときだけ、そのフォルダ内のページをリストアップするカスタマイズです。

これだけではあまりピンとこないし、初歩的な内容かもしれませんが、小規模なサイトであれば意外と利用シーンは多いような気がします。

例えば、以下のような場合、「ご購入方法(purchase)」というフォルダだけ、そのフォルダ内のページリスト(「ご購入方法」と「領収書発行について」)を表示させたいという場合です。

  • 当サイトについて/about/
    • 当サイトについて/about/index.html
  • ご購入方法/purchase/
    • ご購入方法/purchase/index.html
    • 領収書発行について/purchase/receipt.html
  • 個人情報保護方針/privacy-policy/
    • 個人情報保護方針/privacy-policy/index.html

完成したソース

まず、完成したソースは次のようになります。

<mt:PageFolder>
 <$mt:FolderCount setvar="fld_count"$>
 <$mt:FolderLabel setvar="fld_label"$>
</mt:PageFolder>
<mt:If name="fld_count" ge="2">
<dl class="widget page_menu">
 <dt><$mt:Var name="fld_label"$></dt>
 <dd>
 <mt:Pages folder="$fld_label">
 <mt:PagesHeader><ul></mt:PagesHeader>
 <li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
 <mt:PagesFooter></ul></mt:PagesFooter>
 </mt:Pages>
 </dd>
</dl>
</mt:If>

解説

順を追って見ていきます。なお、今回は、フォルダは1階層のみという前提です。

<mt:PageFolder>
 <$mt:FolderCount setvar="fld_count"$>
 <$mt:FolderLabel setvar="fld_label"$>
</mt:PageFolder>

まず最初に、再構築されるウェブページが含まれるフォルダの「フォルダ内に含まれるウェブページの数(MTFolderCount)」と「フォルダ名(MTFolderLabel)」を、それぞれ変数に代入します。

  • フォルダ内に含まれるウェブページの数 : 変数 fld_count に代入
  • フォルダ名 : 変数 fld_label に代入
<mt:If name="fld_count" ge="2">
<dl class="widget page_menu">
 ...
</dl>
</mt:If>

次に全体を MTIf タグで囲み、ウェブページの数(先ほど代入した変数 fld_count)が2ページ以上( ge )の場合のみ dl要素を出力するようにします。

ge は「以上」を表しますが、これらの条件分岐のモディファイアについては「MTIf | テンプレートタグリファレンス」のページが参考になります。

<mt:If name="fld_count" ge="2">
<dl class="widget page_menu">
 <dt><$mt:Var name="fld_label"$></dt>
 <dd>
  ...
 </dd>
</dl>
</mt:If>

dt要素にフォルダ名を出力します。普通に MTFolderLabelタグで出力しても良いのですが、最初にせっかく変数 fld_label に代入しておいたので、その変数の値を出力する形にしました。

<mt:If name="fld_count" ge="2">
...
 <dd>
 <mt:Pages folder="$fld_label">
 <mt:PagesHeader><ul></mt:PagesHeader>
 <li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
 <mt:PagesFooter></ul></mt:PagesFooter>
 </mt:Pages>
 </dd>
...
</mt:If>

次に dd要素内を出力します。

まず、MTPagesタグでページリストを出力させますが、folderモディファイアに先ほど代入した変数 $fld_label を指定することで、現在再構築されているフォルダのページリストを扱うようにします。

あとは、単純に MTPages〜関係のタグで内容を出力させればOKです。

表示例

【フォルダに含まれるウェブページが1ページの場合】

page_eq1.png

【フォルダに含まれるウェブページが2ページ以上の場合】

page_ge2.png

以上です。初歩的な内容でしたね。

Published 2009-08-17
Updated 2019-06-25