Movable Type で、任意のフォルダ内にページが 2ページ以上あるときだけ、そのフォルダ内のページをリストアップするカスタマイズです。 これだけではあまりピンとこないし、初歩的な内容かもしれませんが、小規模なサイトであれば意外と利用シーンは多いような気がします。 例えば、以下のような場合、「ご購入方法(purchase)」というフォルダだけ、そのフォルダ内のページリスト(「ご購入方法」と「...
Movable Type で、任意のフォルダ内にページが 2ページ以上あるときだけ、そのフォルダ内のページをリストアップするカスタマイズです。
これだけではあまりピンとこないし、初歩的な内容かもしれませんが、小規模なサイトであれば意外と利用シーンは多いような気がします。
例えば、以下のような場合、「ご購入方法(purchase)」というフォルダだけ、そのフォルダ内のページリスト(「ご購入方法」と「領収書発行について」)を表示させたいという場合です。
まず、完成したソースは次のようになります。
<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)」を、それぞれ変数に代入します。
<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ページの場合】
【フォルダに含まれるウェブページが2ページ以上の場合】
以上です。初歩的な内容でしたね。