ブログ、インデックス、アーカイブを再構築します。再構築の対象を限定する場合には、対象を引数%argsに指定します。%argsには、次の項目を指定できます。
再構築するブログに対応するMT::Blogオブジェクトです。BlogまたはBlogIDのいずれか一方を必ず指定してください。
再構築するブログのブログIDです。BlogIDまたはBlogのいずれか一方を必ず指定してください。
再構築するアーカイブの種類です。"Individual"、"Daily"、"Weekly"、"Monthly"、"Category"のいずれかの文字列を指定します。この引数はオプションです。指定しない場合はすべてのアーカイブの種類が再構築の対象となります。
再構築するエントリー1件ごとに呼び出されるコールバックです。サブルーチンへのリファレンスを指定します。このサブルーチンには、再構築するエントリーに対応するMT::Entryオブジェクトが渡されます。このコールバックを使ってどのエントリーを再構築したかの実行ログを取るには、次のように指定します。
$mt->rebuild(
BlogID => $blog_id,
EntryCallback => sub { print $_[0]->title, "¥n" },
);
あるいは、次のように状態表示を行うこともできます。
use MT::Entry;
my $total = MT::Entry->count({ blog_id => $blog_id });
my $i = 0;
local $| = 1;
$mt->rebuild(
BlogID => $blog_id,
EntryCallback => sub { printf "%d/%d¥r", ++$i, $total },
);
print "¥n";
この引数はオプションです。指定しない場合はコールバックは実行されません。
rebuildメソッドは、デフォルトではすべてのエントリーを再構築したあとでインデックス・テンプレートを再構築します。インデックス・テンプレートを再構築したくない場合は、trueをこの引数に指定してください。この引数はオプションです。
再構築するエントリーの件数を、当該ブログ中の最新N件に限定します。たとえば、オフセット値を指定せず、Limitを20に指定した場合、ブログ中の最新20件のエントリーを再構築します。この引数は、エントリー・アーカイブを再構築する場合にのみ有効です。この引数はオプションです。デフォルトでは、すべてのエントリーを再構築します。
Limitと組み合わせて指定し、エントリー・アーカイブの再構築の開始位置を指定します。たとえば、Offsetを10に指定してLimitを5に指定すると、最新の10件目から14件目までのエントリーが再構築されます。offsetは新しいものから古いものへの順番で、最新を0とします。この引数はエントリー・アーカイブを再構築する際に、Limitと併用した場合のみ有効です。この引数はオプションです。デフォルトでは最初のエントリーから始めて、すべてのエントリーを再構築します。
ブログ中の特定のエントリーを再構築します。指定したエントリーに付随するエントリーを含めて再構築することもできます。引数%argsには、次の項目を指定できます。
再構築したいエントリーに対応するMT::Entryオブジェクトです。この引数は必須です。
Entryが属するブログに対応するMT::Blogオブジェクトです。この引数はオプションで、指定しない場合には、渡されたMT::Entryオブジェクトの$entry->blog_idカラムから取得したMT::Blogが自動的にrebuild_entryに読み込まれますが、すでにMT::Blogオブジェクトが読み込まれている場合には、直接指定することで、rebuild_entryがオブジェクトの読み込みを行うステップをスキップできます。
エントリーの保存は、他のエントリーに影響することがあります。エントリーの保存後には、影響を受けるアーカイブやメインページなどすべてに変更を反映するため、他のエントリーも再構築しなければならない場合があります。この引数にtrueを指定すると、rebuild_indexesは、前後(時間順)のエントリーを含むアーカイブ、すべてのインデックス・テンプレート、前後の日別、週別および月別アーカイブを再構築します。
この引数は、現在のエントリーの変更にともなって、更新の必要がある可能性のあるエントリーを指定します。たとえば、エントリーのcreated_onフィールドを変更した場合、変更前に隣接していたエントリー(OldPreviousとOldNext)に加えて、変更後に隣接することになるエントリー(PreviousとNext)も再構築する必要があります。
この値をtrueにすると、再構築ルーチンに対して、スタティックな出力ファイルの再構築の必要がないことを指示します。再構築の操作は、ダイナミックな再構築をサポートする記録機能の更新に過ぎません。
テンプレートからアーカイブのページを構築し、ファイル管理レイヤーに書き出すためのメソッドです。
$blogは対象となるブログです。$archive_rootは、ファイルを公開するための出力先アーカイブ・パスです。$mapは、このファイルの公開への関連付けを行うMT::TemplateMapオブジェクトです。$archive_typeは"Daily"、"Weekly"、"Monthly"、"Category"、"Individual"のいずれかです。$ctxは、ファイルの再構築に使用するMT::Template::Contextオブジェクトのハンドルです。¥%condは構築プロセスの実行に使用する条件処理のための引数へのハッシュ・リファレンスです。$build_staticはスタティック・ファイルを作成するかどうかを示すブーリアン・フラグです(falseを指定すると、ダイナミック・ページに必要なレコードの作成のみを行います)。
%specifierは指定した種類のアーカイブの特定のインスタンスを一意に識別するハッシュです。つまり、カテゴリー別アーカイブ・ページの場合、カテゴリーを指定します。日時ベース(日別、週別、月別)のアーカイブ・ページの場合は、そのページに含める期間を指定します。エントリー別アーカイブの場合は、エントリーを指定します。%specifierに指定できるのは、次のキーのいずれか1つのみです。
構築するカテゴリー別アーカイブ・ページのカテゴリーIDまたはMT::Categoryインスタンスです。
構築するエントリー別アーカイブ・ページのエントリーIDまたはMT::Entryインスタンスです。
構築する日時ベースのアーカイブの始点となるタイムスタンプです。
ブログ中のすべてのインデックス・テンプレートを再構築します。Templateを指定することにより、特定のインデックス・テンプレートを再構築することができます。Forceを指定した場合を除き、自動的に再構築するよう設定したテンプレートだけが再構築されます。引数%argsには、次の項目を指定できます。
メインページを再構築するブログに対応するMT::Blogオブジェクトです。BlogまたはBlogIDのいずれか一方を必ず指定してください。
メインページを再構築するブログのブログIDです。BlogIDまたはBlogのいずれか一方を必ず指定してください。
再構築するインデックス・テンプレートを指定するためのMT::Templateオブジェクトです。この引数を指定した場合、ここで指定したインデックス・テンプレートのみが再構築されます。ここで指定したテンプレートが、自動的に再構築するように設定されていない場合、強制的に再構築を行うために、引数Forceを指定しなければならないので注意してください。
自動的に再構築するように設定していないインデックス・テンプレートを強制的に再構築するかどうかを指定するブーリアン・フラグです。デフォルトは0(強制的に再構築しない)です。
このフィルターは、再構築の直前に呼び出されます。これにより、特定の状況でファイルを再構築する必要があるかどうかを、プラグイン側で判断することができます。BuildFileFilterコールバックの呼び出しの例です。
sub build_file_filter($eh, %args)
{
...
return $boolean;
}
他のコールバック関数と同様、第1引数はMT::ErrorHandlerオブジェクトです。コールバック側では、エラー・メッセージを周囲のコンテクストに伝達するためにこのオブジェクトを使用します。引数%argsは、構築するページを指定します。これらのパラメーターでどのようにページを特定するかについての詳細は、MT::FileInfoを参照してください。%argsは次の要素から構成されます。
構築用に設定されたテンプレート・コンテクストを保持します(MT::Template::Contextを参照してください)。
アーカイブの種別です。通常は、"Index"、"Individual"、"Category"、"Daily"、"Monthly"、"Weekly"のいずれかです。
MT::TemplateMapオブジェクトです。どのテンプレートを構築しているかを判別し、書き込むファイルのファイルシステム上のパスを判別するために使用します。
再構築中のページが属するブログに対応するMT::Blogオブジェクトです。
エントリー・アーカイブの場合、再構築中のページが属するMT::Entryオブジェクトを指します。それ以外のアーカイブの場合にも、必ずしも無指定にする必要はありません。個別のエントリーが構築可能な状態にあるかどうかを判別するには、$at parameterを利用するのが最良の方法です。
日付アーカイブの場合、当該ページに含めるエントリーの期間の始点を表すタイムスタンプを、Movable Type標準の14桁のタイムスタンプ書式で指定します。たとえば、1796年4月17日の日別アーカイブのページの場合、"17960417000000"になります。2003年3月の月別アーカイブの場合、$startは"20030301000000"になります。日付アーカイブ以外の場合でも、このパラメーターを指定できます
カテゴリー・アーカイブの場合、パラメーターにカテゴリーを指定します。
このパラメーターを指定する場合、当該ファイルに関する情報を含むMT::FileInfoオブジェクトを指定します。このオブジェクトどのような情報が格納されているかの詳細は、MT::FileInfoの項を参照してください。MT::FileInfoのメンバー変数の中で、最も重要なものがvirtualです。このページのために、実際にディスク上に作成されたファイルがある場合はfalseであり、ページが作成されていない(対応するテンプレートがダイナミックに構築するように設定されているため)場合も 、falseとなります。FileInfoパラメーターを指定しないこともできます。つまり、そのブログでダイナミックに公開するように設定されたものがない場合や、再構築オプションに対応していないデータ・ドライバーを利用してインストールされた場合などです。
BuildPageコールバックは、ページが構築された直後、その内容をファイルシステム上に書き出す前にに呼び出されます。
sub build_page($eh, %args)
{
...
}
パラメーターには、BuildFileFilterコールバックに送られるものを含みます。これに加えて、次のパラメーターを指定します。
最終的に公開される内容へのスカラー・リファレンスです。
再構築によって最初に作成された内容へのスカラー・リファレンスです。この値は主に参照用であり、値を変更しても無視されます。
BuildFileコールバックはファイルが構築された直後に呼び出されます。
sub build_file($eh, %args)
{
...
}
%argsで指定するパラメーターは、BuildPageの場合と同様です。