Movable Type で 2ページ以上あるフォルダだけページリストを表示するカスタマイズ
目次
Movable Type で、任意のフォルダ内にページが 2ページ以上あるときだけ、そのフォルダ内のページをリストアップするカスタマイズです。
これだけではあまりピンとこないし、初歩的な内容かもしれませんが、小規模なサイトであれば意外と利用シーンは多いような気がします。
例えば、以下のような場合、「ご購入方法(purchase)」というフォルダだけ、そのフォルダ内のページリスト(「ご購入方法」と「領収書発行について」)を表示させたいという場合です。
- 当サイトについて/about/
- 当サイトについて/about/index.html
- ご購入方法/purchase/
- ご購入方法/purchase/index.html
- 領収書発行について/purchase/receipt.html
- 個人情報保護方針/privacy-policy/
- 個人情報保護方針/privacy-policy/index.html
完成したソース
まず、完成したソースは次のようになります。
<$mt:FolderCount setvar="fld_count"$>
<$mt:FolderLabel setvar="fld_label"$>
解説
順を追って見ていきます。なお、今回は、フォルダは1階層のみという前提です。
<$mt:FolderCount setvar="fld_count"$>
<$mt:FolderLabel setvar="fld_label"$>
まず最初に、再構築されるウェブページが含まれるフォルダの「フォルダ内に含まれるウェブページの数(MTFolderCount)」と「フォルダ名(MTFolderLabel)」を、それぞれ変数に代入します。
- フォルダ内に含まれるウェブページの数 : 変数 fld_count に代入
- フォルダ名 : 変数 fld_label に代入
次に全体を MTIf タグで囲み、ウェブページの数(先ほど代入した変数 fld_count)が2ページ以上( ge )の場合のみ dl要素を出力するようにします。
ge は「以上」を表しますが、これらの条件分岐のモディファイアについては「MTIf | テンプレートタグリファレンス」のページが参考になります。
dt要素にフォルダ名を出力します。普通に MTFolderLabelタグで出力しても良いのですが、最初にせっかく変数 fld_label に代入しておいたので、その変数の値を出力する形にしました。
...
<$mt:PageTitle encode_html="1"$>
...
次に dd要素内を出力します。
まず、MTPagesタグでページリストを出力させますが、folderモディファイアに先ほど代入した変数 $fld_label を指定することで、現在再構築されているフォルダのページリストを扱うようにします。
あとは、単純に MTPages〜関係のタグで内容を出力させればOKです。
表示例
【フォルダに含まれるウェブページが1ページの場合】

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

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