2004年10月21日

●Trackback表示方法変更&テンプレート修正

世間は Movable Type 3.11で盛り上がってますが(私もか(笑))、自サイトのTrackback表示をポップアップ画面から同一画面で開くように変更しました。
blogを始めた当初はコメントやTrackbackがポップアップで開くサイトに憧れて(?)カスタマイズしたのですが、コメントはマルチカラム化との整合性の面でポップアップから同一画面表示に変更し、Trackbackも同一画面で開く方に傾いてきていたので修正しました。


修正のきっかけは当テンプレートご利用の198さんからのご質問です。私がサイトで表示を確認していたところ、トラックバック部分のデザインがきちんとできていないことに気がつき、直しました。


それに伴い公開中のテンプレートも勝手ながら一部修正致しました。修正したのはMT 3カラム テンプレート(サイズ固定)の個別アーカイブ(1カラム・3カラムとも)および、Movable Type 3.01D-ja 個別アーカイブテンプレートです(こちらは3カラム用を追加しました)。MT 3カラム テンプレートの変更は今回見送りました。
スタイルシートの変更はありません。


どのように表示されるかは、このサイトの任意のエントリーでご確認ください(横着ですいません)。オリジナルのテンプレートにある表示内容も下記のように修正しました。

  • トラックバックURLとトラックバックの表示を分割。トラックバックがないエントリーはトラックバックURLのみ表示します

  • 「このリストは~を参照しています」という文言を削除しました
テンプレートの修正内容は下記の通りです。
Individual Entry Archive の
<div class="blogbody">
        :
     (40行くらい)
        :
<MTEntryIfAllowComments>

の部分を下記のものにごっそり取り替えれば(多分)OKです(修正前のコードはエントリーによってタグの位置やコメントの文言等が異なっていたので割愛させて頂きました)。
<div class="blogbody">
<h3 class="title">●<$MTEntryTitle$></h3>

<$MTEntryBody$>

<div id="a<$MTEntryID pad="1"$>more"><div id="more">
<$MTEntryMore$>
</div></div>

<div class="posted">投稿者 <$MTEntryAuthor$> : <$MTEntryDate$>
<!-- トラックバックを別ウィンドウに表示する場合ここから
<MTEntryIfAllowPings>
| <a href="<$MTCGIPath$><$MTTrackbackScript$>?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">トラックバック</a>
</MTEntryIfAllowPings>
トラックバックを別ウィンドウに表示する場合ここまで -->

</div><!-- posted -->
</div><!-- blogbody -->

<!-- トラックバックを同一ウィンドウに表示する場合ここから -->
<MTEntryIfAllowPings>
<a name="trackbacks"></a>
<div class="comments-head">トラックバックURL</div>
<div class="comments-body">
<p class="techstuff">このエントリーのトラックバックURL:<br />
<$MTEntryTrackbackLink$></p>
</div>

<MTIfNonZero tag="MTEntryTrackbackCount">
<div class="comments-head">トラックバック</div>
<MTPings>
<div class="comments-body">
<p id="p<$MTPingID$>">
≫ <a href="<$MTPingURL$>"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>">[続きを読む]</a>
</p>
<div class="comments-post">トラックバック時刻: <$MTPingDate$></div>
</div><!-- comments-body -->
</MTPings>
</MTIfNonZero>
</MTEntryIfAllowPings>
<!-- トラックバックを同一ウィンドウに表示する場合ここまで -->

<MTEntryIfAllowComments>


以上です。ご参考になれば幸いです。

00:38 | Comments [4] | Trackbacks [0]

2004年10月19日

●Trackbackの連続投稿を受け付けない

Movable Typeでは同一IPからの連続したコメントおよびTrackbackを受け付けない設定になっています。
#今頃気づきました…


といってもデフォルトでは「20秒間受け付けない」という設定になっているので、Trackbackについてはほぼ無条件に受け付けているようなものでしょう。
ということで任意の秒数を設定することができます。例えば10分(=600秒)間受け付けない設定にする場合は、mt.cfg の48行目

# ThrottleSeconds 20

の赤字部分とその横の半角空白を削除して
ThrottleSeconds 600

とします。


この変更に際しては注意点が2点あります。
まず、この値はコメントとTrackbackで共用しているので、秒数を長くし過ぎると異なるコメントを連続投稿する場合に影響が出てしまいます。
これを回避するための作戦として、エレガントではありませんが

    lib/MT/App/Comments.pm

の136行目

my $throttle_period = $app->{cfg}->ThrottleSeconds;


my $throttle_period = $app->{cfg}->ThrottleSeconds / 10;

のように割算の式を追加すればコメントのタイミングだけ短くすることができます。ThrottleSeconds に600(秒)を指定しているのであれば、この例では10で割っているので60秒となります。


もう一点ですが、このプログラムでは送信IPアドレス(厳密にはblog_idも?)しかチェックしていないため、他の記事への異なるコメントやTrackbackも受け付けられません。

00:15 | Comments [0] | Trackbacks [0]

2004年10月18日

●Trackbackのタイムアウトについて

エントリーを投稿してTrackbackを送信した時にタイムアウトが時々発生します。これはping送信処理のタイムアウトが主な原因のようです。


例えばAサイトからBサイトにTrackbackを送信するとBサイトの mt-tb.cgi が起動されます。BサイトではTrackback受信処理を行い、成功すれば処理が正常に完了したことをAサイトに返送します。AサイトではBサイトからの応答を一定のタイミングで待ってまして、このBサイトからの返送が遅いとAサイトでTrackbackタイムアウトが発生します。
タイムアウトになっても相手サイトにTrackbackは正常に送信されていますので再送の必要はありません。送信サイトの表示を更新して確認されると良いでしょう。


タイムアウトにしたくない場合、タイムアウト時間を送信サイト側で変更することで多少回避することができます。変更箇所は Movable Type 3.01D-ja の場合、mt.cfg の259行目です。

# PingTimeout 20

先頭の "#" と半角空白を削除して、値を
PingTimeout 30

等の任意の秒数に変更します。エントリーの登録時間に影響しますのであまり長くしないようにしましょう。デフォルトでは15秒に設定されています。


タイムアウトが発生した場合、ログを確認することでどのサイトへのpingが成功しなかったかが分かります。エントリー登録完了画面でpingタイムアウトが発生していたらログへのリンクが表示されます。それをクリックすると下記のようなログが表示されます。

2004.10.xx 15:12:23 xxx.xxx.xxx.xxx Ping 'http://rpc.weblogs.com/RPC2' failed: HTTP error: 500 read timeout
2004.10.xx 15:12:24 xxx.xxx.xxx.xxx Ping 'http://ping.blo.gs/' failed: HTTP error: 500 read timeout

上記2サイトは、「管理メニュー」→「ウェブログの設定」→「ウェブログの設定」の真中辺りにある「広報 / リモートインターフェイス / トラックバック」で「Movable Typeが自動的に通知するサイト」の

    blo.gs
    weblogs.com

にチェックボックスがつけられた場合に送信されます。個人的には(多分)上記2サイトのエラーしか発生したことがありません。


エントリー登録時以外にログを参照したい場合は、mt.cgiを実行した直後の画面右下に「Movable Type のログの確認」というリンクをクリックすれば表示されます。


参考サイトは下記です。ありがとうございました。

    Modern SyntaxトラックバックPINGエラーで何度も送ってしまう罠

12:55 | Comments [4] | Trackbacks [7]

2004年09月19日

●Trackback元記事表示

変更してからかなり日が経ってますが表題のカスタマイズを実施しました。これまでの状態でも不便は感じてなかったのですがTrackback元が分からないTrackbackを頂いたので導入することにしました。Blog開始当初はTrackbackなんて無縁でしたし、あるはずもないと思ってましたが人生何が起こるか分からないものです。
リンクされている方で使われている方が結構多いので「こちらから参照しました」の掲載は割愛させて頂きました。すいません。
オリジナルの記事は下記です。

上記のエントリーより「MTPingedEntry」をダウンロードして解凍、mt-pingedentry.pl を plugins ディレクトリに配置し、テンプレートのTrackback部分の設定を変更するだけです。


レイアウトは元記事と変えてみました。そのままでも良かったのですがTrackbackを視覚的に表現できないかなという試みです。何かいいレイアウトが思いついたらまた変更します。

00:23 | Comments [15] | Trackbacks [12]

2004年08月21日

●Trackback文字化け対処

Trackbackの文字化けを対処しました。遅くなってすいません > いつもTB頂いているMagic Whiteさん


これは文字コードの異なるBlog(例えばサイトAがUTF-8、サイトBがShift_JIS等)同士でTrackbackを行うと文字化けが発生(サイドメニューのRecent Trackbackの部分)し、これに対する対処です。Trackbackを受信するサイトが対処します。ちなみに現在このサイトはMT3.0Dなのですが、MT3.01D-jaでUTF-8とShift_JISの試験サイトをそれぞれ作ってUTF-8側をTrackback受信サイトとした場合、この対処なしでも文字化けは発生しませんでした(間違ってたらすいません)。


2004/09/15追記
2004/09/11 Movable Type 3.01D-jaにしたためこの対処は現在使用しておりません。


という訳でいつもの手順メモ。

01:06 | Comments [3] | Trackbacks [2]