MT/MTOSのCMSテンプレートは直接触らずにコピーをいぢくるのだ。
公開日 : 2008-01-29 22:55:02
MTのカスタマイズ方法を紹介したブログとかで、 tmpl/の中のファイルの何行目に手を入れたりパッチを当てたりしてカスタマイズできるよ、みたいな Tips を紹介しているケースがあるけれど、直接ソースをいぢくる必要は全然ないのです。
そりゃぁMTOSはGPLだし直接触っても怒られやしないんだけどね。
例えばエントリーの投稿画面をごにょごにょしたいとして、プラグインの中で
callbacks => {
'MT::App::CMS::template_param.edit_entry'
=> ¥&_entry_param,
としていぢる方法は良く知られているわけで、MT4からはDOMでもって項目を追加したりすることも出来る。
callbacks => {
'MT::App::CMS::template_source.edit_entry'
=> ¥&_entry_source,
とすれば、ソースをプログラムで書き換えることができるし、
callbacks => {
'MT::App::CMS::template_output.edit_entry'
=> ¥&_entry_output,
とすれば、テンプレートレンダリング後のソースにアクセスして書き換えることもできる。
でも、所詮プログラムだし、Perlわかんねーし、ってな場合はノンプログラミングでカスタマイズ出来る方法も用意されている。
mtフォルダの直下に alt_tmpl フォルダがあって、ここに edit_entry.tmplのコピーを置く。このコピーに対して修正をかければ、そいつが優先される。
テンプレートを他のフォルダに置きたければ mt-config.cgi に
AltTemplatePath my-alt-tmpl
とか書けば良い。
プラグインを作成する時に、前述のようにcallbackでDOMとかMT3時代に良く見られたtemplate_sourceを正規表現でって言う方法も良いけど、alt_tmplに置く方法だとノンプログラミングでカスタマイズ出来て、且つノンプログラミングとは言ってもMT4.1のMTタグはもはやプロムラミング言語チックなんだから、代替テンプレートを用意して「管理画面の見た目カスタマイズ部分」と「プラグラミング部分」をうまくわけると効率アップと分業化がうまく出来るんじゃないでしょうかね。
DOMでプラグインが壊れにくいっていってもメジャーアップグレードの時は駄目だろうし、MT4.0→4.1でもやっぱりテンプレート変わってるから調整は皆無にはならないから、見た目調整をプログラミングから分離させる方法は良いと思うんだけど。
プラグインの場合は配布とかセッティングとか一発で、alt_tmplにこれ、pluginにこれ、mt-staticにこれっていかにも面倒なんだが、プラグイン配布とか設置とか考えるのならばテンプレートの場所をプラグインで定義してやれば良い(実はこれを書こうと思ったというか、ちょっとさっきやってみたのがこれで、そう考えると長い前振りだね)。
プラグインでCMSのテンプレートをカスタマイズする際に、プラグインフォルダ直下の/tmplフォルダにテンプレートを置くには以下のように書く。
sub init_request {
my $plugin = shift;
my ( $app ) = @_;
if ( $app->isa('MT::App::CMS') ) {
$app->config( 'AltTemplatePath', File::Spec->catdir($plugin->path,'tmpl') );
}
}
というようなことで、管理画面のカスタマイズ方法をまとめ中。