MTWriteToFileプラグインでフォルダアーカイブ

Movable Type 4 から、エントリーに対応してウエブページ、カテゴリに対応してフォルダがあらたに加わりましたが、フォルダアーカイブはありません。

そこで、小粋空間: フォルダアーカイブとフォルダアーカイブ一覧を作るを参考にして、トライしてみました。

前提として、The blog of H.Fujimotoで配布されているテンプレートの再構築結果を部分的にファイルに出力するプラグインMTWriteToFileが必要です。

インデックステンプレートを新たに作成し、

<MTTopLevelFolders>
<MTSetVarBlock name="fname"><MTFolderPath>/index.html</MTSetVarBlock>
<MTWriteToFile file="$fname">書き出したいアーカイブページのテンプレートの内容</MTWriteToFile>
<MTSubFolderRecurse>
</MTTopLevelFolders>

folder_archive_dummy.datと名前を付けて保存します。

注意点は、

<MTWriteToFile file="$fname">のあとに改行があると、そのまま出力されてしまいますので、改行せずに、テンプレートの内容を入れてください。

このサイトで使用している一例を掲載しておきます。

<MTTopLevelFolders>
<MTSetVarBlock name="fname"><MTFolderPath>/index.html</MTSetVarBlock>
<MTWriteToFile file="$fname"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<$mt:Include module="HTMLヘッダー"$>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$mt:Link template="rsd"$>" />
<title><$MTFolderLabel$> - <$mt:BlogName encode_html="1"$></title>
<mt:SetVar name="folder_archive" value="1">
</head>
<body id="<$mt:BlogTemplateSetID$>" class="mt-main-index <$mt:Var name="page_layout"$>">
<div id="my_body">
<$mt:Include module="バナーヘッダー"$>
<div id="content">
<div id="my_contents">
<h2 id="top"><$MTFolderLabel$></h2>
<MTPages lastn="10">
<div class="contents_box" id="entry-<$MTPageID$>">
<h3><a href="<$MTPagePermalink$>" title="<$MTPageTitle encode_html="1"$>に移動します"><$MTPageTitle encode_html="1"$></a></h3>
<div class="contents_comment">
<$MTPageBody$>
</div>
</div>
</MTPages>
</div>
<$mt:Include module="サイドバー"$>
</div>
<$mt:Include module="バナーフッター"$>
</div>
</body>
</html></MTWriteToFile>
<MTSubFolderRecurse>
</MTTopLevelFolders>
【2009-01-24 追記】
特定のフォルダをフィルタリングに、特定のフォルダをフィルタリングするタグを追加した例を書きました。