任意のテンプレートを再構築するテンプレートタグ(その2)

昨日に続いて、任意のテンプレートを再構築するテンプレートタグを紹介します。
今日はテンプレートタグの詳細な書き方を解説します。

1.再構築対象を指定するモディファイア

再構築する対象は、以下のモディファイアを組み合わせて指定します。

モディファイア指定する値
archive_typeアーカイブの種類
autdor_idユーザーのID(ユーザー系アーカイブテンプレートを再構築する場合)
blog_id再構築対象のブログのID(通常は指定不要)
category_idカテゴリのID(カテゴリ系アーカイブテンプレートを再構築する場合)
entry_idブログ記事/ウェブページのID(ブログ記事/ウェブページアーカイブテンプレートを再構築する場合)
startdateアーカイブの開始日の日付(日付系アーカイブテンプレートを再構築する場合)
template_id再構築するテンプレートのID

archive_typeモディファイアには、以下の値を指定します。

アーカイブの種類
indexインデックス
Yearly年別
Monthly月別
Weekly週別
Daily日別
Categoryカテゴリ
Category-Yearlyカテゴリ年別
Category-Monthlyカテゴリ月別
Category-Weeklyカテゴリ週別
Category-Dailyカテゴリ日別
Authorユーザー
Author-Yearlyユーザー年別
Author-Monthlyユーザー月別
Author-Weeklyユーザー週別
Author-Dailyユーザー日別
Individualブログ記事
Pageウェブページ

また、startdateモディファイアは、アーカイブの開始日を年4桁/月日2桁/0を6桁の数値で表します。
例えば、2012年1月の月別アーカイブページを再構築する場合、「startdate="20120101000000"」と指定します。

各モディファイアとも、複数の値を指定したい場合は「モディファイア="値","値","値"」のように、「"値"」をコンマで区切って書きます。
例えば、IDが100と101のブログ記事を再構築する場合、「entry_id="100","101"」と書きます。

モディファイアの指定方法によっては、複数のページが再構築対象になることもあります。
その場合は、対象の全てのページが再構築されます。

2.モディファイアの指定の例

モディファイアの指定の例をいくつか挙げておきます。

2-1.IDが1のインデックステンプレートを再構築

<$mt:RebuildAnyTemplate archive_type="index" template_id="1"$>

この例では、「archive_type="index"」を省略しても動作します。

2-2.IDが2のカテゴリアーカイブテンプレートを、すべてのカテゴリに対して再構築

<$mt:RebuildAnyTemplate archive_type="Category" template_id="2"$>

2-3.IDが2のカテゴリアーカイブテンプレートで、IDが3のカテゴリのページだけを再構築

<$mt:RebuildAnyTemplate archive_type="Category" template_id="2" category_id="3"$>

2-4.IDが4の月別アーカイブテンプレートで、すべての月別アーカイブページを再構築

<$mt:RebuildAnyTemplate archive_type="Monthly" template_id="4"$>

2-5.IDが4の月別アーカイブテンプレートで、2012年9月の月別アーカイブページを再構築

<$mt:RebuildAnyTemplate archive_type="Monthly" template_id="4" startdate="20120901000000"$>

2-6.IDが5のブログ記事テンプレートで、すべてのブログ記事のページを再構築

<$mt:RebuildAnyTemplate archive_type="Individual" template_id="5"$>

2-7.IDが5のブログ記事テンプレートで、IDが6のブログ記事のページを再構築

<$mt:RebuildAnyTemplate archive_type="Individual" template_id="5" entry_id="6"$>

2-8.IDが7のウェブページテンプレートで、すべてのウェブページを再構築

<$mt:RebuildAnyTemplate archive_type="Page" template_id="7"$>

2-9.IDが7のウェブページテンプレートで、IDが8のウェブページを再構築

<$mt:RebuildAnyTemplate archive_type="Page" template_id="7" entry_id="8"$>

3.logモディファイア

logモディファイアは、再構築したページのパスをシステムログに記録したいときに使います。

「log="whole"」とすると、1回のMTRebuildAnyTemplateタグの実行で複数のページを再構築した時には、それらすべてのパスを1件のシステムログに記録します。
また、「log="each"」とすると、1回のMTRebuildAnyTemplateタグの実行で複数のページを再構築した時には、ページ1件ごとにパスをシステムログに記録します。

4.RebuildAnyTemplateプラグインの利用上の注意

RebuildAnyTemplateプラグインを使う上で、以下の点にご注意ください。

4-1.多くのページを再構築しない

RebuildAnyTemplateタグで大量のページを再構築すると、mt.cgiがタイムアウトしたり、500エラーになったりする可能性が高くなります。
モディファイアを適切に指定して、必要最小限の再構築にとどめるようにしてください。

4-2.MTRebuildAnyTemplateタグの無限ループ

あるテンプレートの中に、そのテンプレート自身を再構築するMTRebuildAnyTemplateタグを入れると、再構築の無限ループが発生してしまいます。
例えば、メインページのインデックステンプレートの中に、そのインデックステンプレートを再構築するMTRebuildAnyTemplateタグを入れると、無限ループになります。
このようなことが起こらないようにする必要があります。

4-3.一度も再構築したことがないページは再構築できない

このプラグインでは、「mt_fileinfo」というテーブルの情報を元に、再構築する対象を検索します。
ただ、これまでに一度も再構築されていないページでは、mt_fileinfoテーブルに情報が作られていません。
そのため、MTRebuildAnyTemplateタグの処理で情報を検索することができず、再構築することができません。
インポート機能でブログ記事を読み込んだ直後など、再構築をまだ一度も行っていない時には、あらかじめ再構築を行っておく必要があります。

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください