アルファサード株式会社 代表取締役 野田 純生のブログ


MTCSの拡張とか。


公開日 : 2008-11-03 18:24:13


MTCSでコミュニティ系のサイトを作る時にMTCSのプロフィールの編集画面からプロフィールを保存した時に処理を割り込ませたいって時、ありますよね(え、無い?)。mt_authorを拡張して(正確にはmt_authorテーブルを拡張するとエラーになっちゃうからauthor_metaとか別のテーブルとか作ってユーザーのいろんなデータを保存したい時(且つ独自拡張した項目の必須項目チェックしたい)とか。

標題の「MTCSの拡張」に限らずこの手の拡張をする時にコードに手を入れずに該当の処理をオーバーライドする方法についてのメモ。

1.プラグイン(アドオン)のIDを調べて(この場合は「community」)

/mt/addons/Community.pack/lib/MT/App/Community.pm

#(略)
sub id { 'community' }
#(略)

2.上書きしたい部分はどこか? を探して

/mt/addons/Community.pack/config.yaml

name: Community Pack
        #(中略)
applications:
    cms:
        methods:
        #(中略)
    community:
        handler: MT::App::Community
        methods:
        #(中略) ↓ココ
            save: $Community::MT::App::Community::save_profile_method

3.プラグインで上書きする

sub init {
    my $community = MT->component( 'community' );
    my $r = 
    $community->registry( 'applications', 'community', 'methods' );
    $r->{save} = ¥&save_profile_method;
}

sub save_profile_method {
    # ここにオーバーライドする処理を書く!
}

MT::Core(メソッドとかテンプレートタグ)を上書きする場合はcomponent('core')に対してオーバーライドする。

sub init {
    my $core = MT->component('core');
    my $r = $core->registry('tags', 'block');
    $r->{Entries} = ¥&_hdlr_entries;
}

と、いうことで、さぁ、コミュニティサイトをつくろう(笑)!

カテゴリ


このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の創業者であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ