2010年4月30日
コマーシャルパックで利用する管理画面の代替テンプレートパス(その2)
「コマーシャルパックで利用する管理画面の代替テンプレートパス(その1)」の続きです。
カスタムフィールドの一覧を表示するlist_field.tmplは、代替テンプレートに配置したファイルを正常に取得しないようです。
原因は、Community.pack::lib::MT::Community::list_fieldのテンプレート取得処理で、テンプレートファイルのパスを直接指定している(下記赤色部分)ためと思われます。
sub list_field {
my ($app) = @_;
my $plugin = $app->component('Commercial');
my $q = $app->param;
…中略…
return $app->listing({
terms => {
$blog_id ? ( blog_id => [ $blog_id, 0 ] ) : ()
},
args => { sort => 'name', 'direction' => 'ascend' },
no_limit => 1,
type => 'field',
code => $hasher,
template => File::Spec->catdir($plugin->path,'tmpl','list_field.tmpl'),
params => {
($blog_id ? (
blog_id => [ $blog_id, 0 ],
edit_blog_id => $blog_id,
) : ( system_overview => 1 )),
list_noncron => 1,
saved_deleted => $q->param('saved_deleted') || 0,
saved => $q->param('saved') || 0,
obj_types_loop => \@customfield_objs,
cfg_customfield => 1,
search_type => 'entry',
},
});
}
赤色部分を次のように修正すれば、代替テンプレートが取得できるようになります。
sub list_field {
my ($app) = @_;
my $plugin = $app->component('Commercial');
my $q = $app->param;
…中略…
return $app->listing({
terms => {
$blog_id ? ( blog_id => [ $blog_id, 0 ] ) : ()
},
args => { sort => 'name', 'direction' => 'ascend' },
no_limit => 1,
type => 'field',
code => $hasher,
template => 'list_field.tmpl',
params => {
($blog_id ? (
blog_id => [ $blog_id, 0 ],
edit_blog_id => $blog_id,
) : ( system_overview => 1 )),
list_noncron => 1,
saved_deleted => $q->param('saved_deleted') || 0,
saved => $q->param('saved') || 0,
obj_types_loop => \@customfield_objs,
cfg_customfield => 1,
search_type => 'entry',
},
});
}
Comments [0]
| Trackbacks [0]
2010年4月29日
コマーシャルパックで利用する管理画面の代替テンプレートパス(その1)
Movable Typeのコマーシャルパックで利用する管理画面用テンプレートファイル(addons/Commercial.pack/tmpl)の代替テンプレートパスについて、本エントリーにて紹介します。
これは、Twitterでriatwさんの次のような質問をみつけましたので、それに応答したものです。
1.コマーシャルパックの代替テンプレートの探索動作
コマーシャルパックでも代替テンプレートは有効ですが、実験したところ、元のテンプレートが存在しない場合に限って、代替テンプレートを検索するようです。コア機能の代替テンプレートは、元のテンプレートが存在しても代替テンプレートを優先して検索するので、動作が異なります。
よって、コマーシャルパックで代替テンプレートを利用する場合、元のテンプレートファイルをリネームまたは削除する必要があります。
2.代替テンプレートの検索順序
コマーシャルパックの代替テンプレートは、次の順番でパスを検索します。
- addons/Commercial.pack/tmpl
- addons/Commercial.pack
- alt-tmpl/cms
- alt-tmpl
- tmpl/cms
- tmpl
環境変数AltTemplatePathの値はデフォルト(alt-tmpl)です。
Comments [0]
| Trackbacks [0]

