MTCSの拡張とか。

| コメント(0) | トラックバック(0)

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;
}

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

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/57

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2008年11月 3日 18:24に書いたブログ記事です。

ひとつ前のブログ記事は「(MT)切り捨て、切り上げ、四捨五入とか。」です。

次のブログ記事は「MTでのエントリー一覧画面の拡張。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6