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