CmsType1Test01
構成
$MT_DIR/
|__ plugins/
| |__ CmsType1Test01/
| |__ config.yaml
| |__ lib/
| | |__ CmsType1Test01
| |__ Callback.pm
ソース
config.yaml
id: cmstype1test01
key: CmsType1Test01
name: CmsType1Test01
version: 0.00
callbacks:
# テンプレート処理前に呼び出される
MT::App::CMS::template_source.edit_entry:
# 使用するコード
code: $CmsType1Test01::CmsType1Test01::Callback::hdlr_template_source_edit_entry
# テンプレートに渡すデータを変更する場合に呼び出す
MT::App::CMS::template_param.edit_entry:
# 使用するコード
code: $CmsType1Test01::CmsType1Test01::Callback::hdlr_template_param_edit_entry
lib/CmsType1Test01/Callback.pm
package CmsType1Test01::Callback;
use strict;
use MT::FileMgr;
use Data::Dumper;
# テンプレート処理前に行う
sub hdlr_template_source_edit_entry{
# 引数を取得
# $cb : コールバッククラスオブジェクト
# $app : MT::App::CMSクラスのオブジェクト
# $tmpl : MT:Templateクラスのオブジェクト
my ($cb, $app, $tmpl) = @_;
# 削除するテンプレート情報を設定
my $old = <<EOF;
<div class="tab" mt:command="set-editor-extended" mt:tab="extended">
<label><a href="javascript:void(0);"><__trans phrase="Extended"></a></label>
</div>
EOF
# 置き換え前
$old = quotemeta($old);
$old =~ s!(\\ )+!\\s+!g;
# 置き換え後
my $new = "";
# 変換して設定
$$tmpl =~ s!$old!$new!;
}
# テンプレートに変更を設定する
sub hdlr_template_param_edit_entry{
# 引数を取得
# $cb : コールバッククラスオブジェクト
# $app : MT::App::CMSクラスのオブジェクト
# $param: %paramのリファレンス
# $tmpl : MT:Templateクラスのオブジェクト
my ($cb, $app, $param, $tmpl) = @_;
# 埋め込むノード
my $host_node = $tmpl->getElementById('tags');
# 埋め込むHTML情報
my $innerHTML =<< "HTML";
<input
type="text"
name="url_field"
id="url_field"
class="full-width" mt:watch-change="1" value="<mt:var name="url_field" escape="html">"
autocomplete="off" />
HTML
# 新規にノードを作成
my $block_node = $tmpl->createElement(
'app:setting',
{
id => 'url_field',
label => 'URL',
label_class => 'top-label',
}
);
# HTML情報をノードに設定
$block_node->innerHTML( $innerHTML );
# テンプレートに追加
$tmpl->insertAfter($block_node, $host_node);
# フィールドに値を設定
$param->{url_field} = "http://www.example.com/" if !$param->{url_field};
}
sub debug{
my ($data) = @_;
$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 1;
my $dump = Dumper($data);
my $file = "/home/httpd/cgi-bin/mt/aaa.txt";
my $fmgr = MT::FileMgr->new('Local');
$fmgr->put_data($dump, $file);
}
1;
結果
変更前(続きタブあり、URL項目なし)
変更後(続きタブなし、URL項目あり)
最終更新:2012年02月05日 11:36