Movable Type 備忘録

 

 重複トラックバックを抑止する

わたしは今までの経験で、自分では意識していなかったのですが、同じエントリに複数のトラックバックをしてしまったことがありました。

悪意があったわけではありませんが、気づいたらトラックバックされちゃってて…そのサイトの管理人に迷惑をかけたことがあります。
みなさんにもそういった経験ありませんか!? 逆に重複トラックバックされたことがあるなんて人もいると思います。

今回は、そんな重複トラックバックを抑止するカスタマイズについて説明したいと思います。

今回参考にさせていただいたサイトは小粋空間様です。

重複トラックバックを抑止するには、duplicateTBPingfilterプラグインをインストールすることで対応できます。
このプラグインの機能は以下の通りです。

  • 同一エントリーに対する、同一URLからのトラックバックを受け付けないようにする。

  • チェック方法は、トラックバック受信時に同一エントリー内のトラックバックを新着順に取り出し、受信したトラックバックのURLと比較して、同一URLであればフィルタ対象とする。

  • 受信したトラックバックに含まれるタイトル、または概要を含めたフィルタリングが可能で、 デフォルトは、タイトルと概要が全く同じトラックバックのみフィルタリングとしている。

  • チェックするトラックバック数を指定できる。

  • トラックバックがフィルタリングされた場合、ログを出力してくれる。

カスタマイズ方法

duplicateTBPingfilterプラグインの入手はこちらから▼
http://yujiro.dyndns.org/blog/koikikukan/archives/2005/05/28-235959.php

  • フィルタ条件を設定します。
    解凍したduplicateTBPingfilterプラグインをテキストエディタで開いてください。

  • トラックバックのタイトルをフィルタ対象にするかどうかを設定します。
    エントリー内に同一URLからのトラックバックが検出された場合、新着トラックバックのタイトルと登録済トラックバックのタイトルを比較する or 比較しないの設定をします。

    比較する場合は、タイトルの文字列が異なっていれば新規トラックバックとして受け付けます。
    デフォルトでは比較するようになっています。

    フィルタ条件を変更するには、15行目を修正します。

    比較する場合   our $title = 1;
    比較しない場合 our $title = 0;
    
    
  • トラックバックの概要をフィルタ対象にするかどうかを設定します。
    エントリー内に同一URLからのトラックバックが検出された場合、新着トラックバックの概要と登録済トラックバックの概要を比較する or 比較しないの設定をします。

    比較する場合、概要の文字列が異なっていれば新たなトラックバックとして受け付けます。
    デフォルトでは比較するようになっています。

    >

    フィルタ条件を変更するには、19行目を修正します。

    比較する場合   our $excerpt = 1;
    比較しない場合 our $excerpt = 0;
    
    
  • チェックするトラックバック数を設定します。
    エントリーに登録されたトラックバックと最大いくつまでチェックするかを指定します。
    デフォルトは "0" で、エントリー内の全てのトラックバックが対象であることを示しています。

    トラックバック数を変更するには、22行目を修正します。

    すべてを対象とする場合          our $counter = 0;
    例えば、5つまで対象としたい場合 our $counter = 5;
    
    
  • 以上の変更が済みましたら、保存してサーバーにアップロードします。
    duplicateTBPingfilterプラグインを mt/plugins の中にアップロードしてください。

  • 次に、相手サイトに正常にトラックバックされたかのように見せる設定をします。
    lib/MT/App/Trackback.pm ファイルをテキストエディタで開いてください。

    238行目あたりを以下のように修正します。

    修正前
    $ping->blog_name($blog_name);
    if (!MT->run_callbacks('TBPingFilter', $app, $ping)) {
    return $app->_response(Error => "", Code => 403);
    }
    修正後
    $ping->blog_name($blog_name);
    if (!MT->run_callbacks('TBPingFilter', $app, $ping)) {
    return 1;
    }
    
    

    赤い字の行を削除または、コメントにして、青い時の行に差し替えます。
    この変更をすることで、相手サイトにはトラックバックが正常終了したかのように見えますので、さらに重複トラックバックが送信される可能性が低くなります。

    ただし他のプラグインと競合している場合は注意が必要なようです。

以上で、重複トラックバックの抑止を行うことができました。

フィルタされたトラックバックは、MovableType(ムーバブルタイプ)のログに出力してくれるそうなのですが、これについては確認できませんでした。

特にログ出力されなくても問題ないのですが、とりあえず小粋空間様に質問してみます。

わたしの場合おっちょこちょいなので、どちらかといえば抑止する側というより、抑止される側の人なのですが、トラバしてテストしたところ抑止できていたのでみなさんのブログにもどうですか♪

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

コメント用フィード