Movable Typeのトラックバックにパラメータをつける

Movable Typeのエントリに対してトラックバックが送信されたときに起動するcgiはmt-tb.cgiである。実際にはMT::App::Trackback.pmが処理している。これを読んでみた。

sub _get_params {
    my $app = shift;
    my($tb_id, $pass);
    if ($tb_id = $app->param('tb_id')) {
        $pass = $app->param('pass');
    } else {
        if (my $pi = $app->path_info) {
            $pi =~ s!^/!!;
            my $tbscript = $app->config('TrackbackScript');
            $pi =~ s!.*\Q$tbscript\E/!!;
            ($tb_id, $pass) = split /\//, $pi;
        }
    }
    ($tb_id, $pass);
}

これがトラックバックのパラメータを分解しているメソッド。これを呼び出しているのはpingメソッド内で,2つのコールバック関数(TBPingThrottleFilterとTBPingFilter)は_get_paramsが呼ばれた後に呼び出されている。したがって,コールバックで何かしようとするのは無理。
となるとTrackback.pmをサブクラシングするのが早いかな。やってみよう。
このへんを調べるのに大変に役に立った本がコレ。MTのDBの構成,MTのcgiの動作,プラグインの作り方など,ためになるお話が一杯でした。

Hacking Movable Type (ExtremeTech)

Hacking Movable Type (ExtremeTech)