「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
WriteToFileプラグインを使ったフォルダアーカイブの作成
Movable Type 4以降ではウェブページとフォルダの機能が導入され、ブログ的でない一般的なウェブページを管理することができます。
ただ、カテゴリにはカテゴリアーカイブがあるのに対し、フォルダのアーカイブを出力する機能がなぜかありません。
WriteToFileプラグインを使うと、擬似的にフォルダアーカイブを出力することができます。
その方法を紹介します。
1.考え方
テンプレートの中でMTSubFoldersタグのブロックを使うと、フォルダの一覧を出力することができます。
そこで、インデックステンプレートを1つ作り、MTSubFoldersタグのブロックの中にMTWriteToFileタグのブロックを入れ、フォルダごとに再構築結果をファイルに保存するようにします。
これによって、擬似的なフォルダアーカイブを作ることができます。
大まかなテンプレートの組み方は、以下のようになります。
<MTTopLevelFolders> <MTSetVarBlock name="fname"><MTFolderPath>/index.html</MTSetVarBlock> <MTWriteToFile file="$fname"> ヘッダー等を出力する部分 <MTPages> フォルダ内の各ページのタイトル等を出力する部分 </MTPages> フッター等を出力する部分 </MTWriteToFile> </SubFolderRecurse> </MTTopLevelFolders>
2.作成例
例えば、Movable Type 4.2標準のテンプレートセットで、フォルダアーカイブとして、各フォルダのウェブページのタイトルを一覧表示できるようにしたいとします。
その場合、以下のような手順をとります。
2-1.インデックステンプレートの作成
まず、インデックステンプレートを1つ作成します。
テンプレートの名前は「フォルダアーカイブ」にします。
また、このインデックステンプレートは、WriteToFileプラグインでファイルを出力するためのもので、テンプレート自体の出力は不要です。
そこで、出力ファイル名は「dummy.dat」などにします。
2-2.メインページのテンプレートを貼り付け
2-1.で作ったインデックステンプレートに、メインページのテンプレートの内容をコピーして貼り付けます。
2-3.テンプレートの先頭と末尾にタグを追加
次に、テンプレートの先頭と末尾に、それぞれ以下のタグを追加します。
<MTTopLevelFolders> <MTSetVarBlock name="fname"><MTFolderPath>/index.html</MTSetVarBlock> <MTWriteToFile file="$fname">
</MTWriteToFile> <MTSubFolderRecurse> </MTTopLevelFolders>
2-4.MTEntriesタグのブロックの書き換え
メインページのテンプレートには、以下のように、MTEntriesタグを使って最新のブログ記事一覧を出力する部分があります。
<mt:Entries> <mt:Ignore><!-- Use the Entry Summary module for each entry published on this page --></mt:Ignore> <$mt:Include module="ブログ記事の概要"$> </mt:Entries>
この部分を以下のように書き換えます。
<mt:Pages> <mt:PagesHeader> <h1 class="archive-title"><$MTFolderLabel$>フォルダのページ</h1> <ul> </mt:PagesHeader> <li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li> <mt:PagesFooter> </ul> </mt:PagesFooter> </mt:Pages>
3.注意事項
ウェブページの数にほぼ比例して、このテンプレートの再構築時間も長くなります。
ウェブページの数が非常に多い場合、yujiro氏作のRebuildIndexFilterプラグインを使って、コメントやトラックバックを受信する時には、このテンプレートを再構築しないようにすることをお勧めします。