MT4でfolderの中を展開してサイトマップとかに使う
※2007年10月31日加筆
いまならこちらの記事がおすすめ
小粋空間さん:Sitemaps 0.90 用テンプレート(MT4対応)
以前「MT4でカテゴリにエントリ一覧を表示する」というエントリで使った方法を応用して、サイトマップにウェブページを表示する方法です。ていうか、すでにサイトマップを作る for Movable Type 4(小粋空間さん)に載っていたわけですが(^^;)
<MTTopLevelFolders>
<MTSubCatIsFirst>
<ul>
</MTSubCatIsFirst>
<MTIfNonZero tag="MTFolderCount">
<li><$MTFolderLabel$>
<ul>
<MTPages>
<li><a href="<$MTPagePermalink$>" title="<$MTPageTitle$>"><$MTPageTitle$></a></li>
</MTPages>
</ul>
</MTIfNonZero>
<MTSubFolderRecurse>
</li>
<MTSubCatIsLast>
</ul>
</MTSubCatIsLast>
</MTTopLevelFolders>
うちはフォルダ名=カテゴリなので、このようにしてみる。ついでにフォルダ名を見出しに変更。
<MTTopLevelFolders>
<MTIfNonZero tag="MTFolderCount">
<h4><$MTFolderLabel$></h4>
<ul>
<MTPages>
<li><a href="<$MTPagePermalink$>" title="<$MTPageTitle$>"><$MTPageTitle$></a></li>
</MTPages>
</ul>
</MTIfNonZero>
<MTSubFolderRecurse>
</li>
</MTTopLevelFolders>
通常はこれでいいんですが、うちの場合、MTFolderLabelの値をそのままCSSシグネチャに使っているので、contact、thissite、profileなどと、フォルダ名がそのまんま出てしまうんですね。これを解決するために、MTSetVar、MTGetVar、MTIfで変数をコントロールします。
<MTTopLevelFolders>
<MTIfNonZero tag="MTFolderCount">
<MTSetVarBlock name="foldertitle"><$MTFolderLabel$></MTSetVarBlock>
<MTIf name="foldertitle" eq="contact">
<MTSetVar name="foldertitle" value="お問い合わせ">
</MTIf>
<MTIf name="foldertitle" eq="profile">
<MTSetVar name="foldertitle" value="プロフィール">
</MTIf>
<MTIf name="foldertitle" eq="thissite">
<MTSetVar name="foldertitle" value="このサイトについて">
</MTIf>
<h4><$MTGetVar name="foldertitle"$></h4>
<ul>
<MTPages>
<li><a href="<$MTPagePermalink$>" title="<$MTPageTitle$>"><$MTPageTitle$></a></li>
</MTPages>
</ul>
</MTIfNonZero>
<MTSubFolderRecurse>
</li>
</MTTopLevelFolders>
MTSetVarで変数foldertitleに取得した<$MTFolderLabel$>の値を、MTIfで調べて一致したときだけ上書きして表示しています。MT4のカスタマイズって、MTSetVar、MTGetVar、MTIfの使い方が重要ですね。
というわけで、自分用メモでした。