RebuildAt1stView(Beta) ハイブリッド・パブリッシング対応版。
公開日 : 2007-08-30 15:23:56
先日来のProNetミーティングや開発者向けカンファレンスで 上ノ郷谷さんがしきりに「ハイブリッド・パブリッシング」と言っていたのでRebuildAt1stViewをハイブリッド・パブリッシングに対応させてみた。これで、テンプレート毎に「インデックス等、頻繁にアクセスされるページは静的生成」その他のページは「最初のリクエストがあった時点で再構築」という使い分けが可能になります。さぁ、再構築の新しい選択肢を今すぐキミも体験してみよう! とかなんとか。
ダウンロード(Ver.0.2)
以下、プラグインがどうこうというよりもMT4のお作法で書き直しつつ新しいフィーチャーを取り入れてみたいということでメモ的なエントリーになりますが。
オブジェクトの拡張もコールバックも「それ、Registryで」
MT4ではデータベースのテーブルの拡張がとても簡単になっています。Hack-a-thonの時にFujimotoさんが「簡単だよ!」って言っていたので (早速公開された「カテゴリーとフォルダを並べ替えるプラグイン(MT4専用)」でも使われています。
今回はmt_templateテーブルを拡張してテンプレート毎に静的再構築、RebuildAt1stView対象を設定できるようにするフラグ「template_rebuild_at」フィールドを追加しました。
拡張の仕方は本当に簡単。Pluginを->newする時に「schema_version」を指定して「init_registry」で拡張するテーブル名、フィールド名とタイプを指定するだけです。
コールバックのところもこれまでは、
MT->add_callback('MT::App::CMS::AppTemplateSource.edit_template',9 ,$plugin, ¥&_ rebuld_option);
とか書いていましたがMT4では「init_registry」の中で指定します。
この他に、タグの追加や__modeの追加も「init_registry」。init_registryがMT4対応プラグイン作成のキモ? かもしれません。
ということで、RebuildAt1StViewのinit_registryはこんな感じ。
sub init_registry {
my $plugin = shift;
$plugin->registry({
object_types => {
'template' => {
'rebuild_at' => 'integer',
},
},
callbacks => {
'build_file_filter'
=> ¥&_build_file_filter,
'MT::App::CMS::template_source.edit_template'
=> ¥&_rebuld_option,
'MT::App::CMS::template_param.edit_template'
=> ¥&_rebuild_flag,
},
});
}
日本語版のドキュメント充実にも期待していますが、当面はここでMT4の新しいお作法? のお勉強が可能です。