トラックバック:完結編?

土曜日, 3月 6th, 2004

 先ほど,リーセントトラックバックを表示する修正を行った.これだけではなく,さらに各エントリーの個別表示画面にもトラックバックを表示させるように修正を行うことにする.
 参考にしたのはトラックバック表示(BLOG質問箱)である.これはとても簡単で,Individual Entry Archiveに以下のソースを追加するだけでOKであった.

<!-- トラックバック表示 -->
<MTEntryIfAllowPings>
<div class="comments-head">Trackback</div>
<MTPings>
<div class="trackback-body">
<span class="trackback-post">
<b>Title:</b> <a href="<$MTPingURL$>" target="new"><$MTPingTitle$></a><br />
<b>Excerpt:</b> <$MTPingExcerpt$><br />
<b>From:</b> <$MTPingBlogName$><br />
<b>Date:</b> <$MTPingDate format="%Y.%m.%d"$>
</span>
</div>
</MTPings>
</MTEntryIfAllowPings>
<!-- トラックバック表示終わり -->

 さて,実はここで問題が発生する.先のBLOG質問箱には,こう書いてあった.

トラックバック表示がPermalinkに反映されるタイミングは、トラックバックを受けた後でそのエントリーにコメントを受けるなどしてリビルドされたときになります。

そのため,今度はこれを何とかしないといけない.これに関する情報はいくつかあったが,今回参考にしたのは,トラックバック着信で自動リビルド(HuntingGirledCollective)と,MTいじり(numalog)の二つであった.ソース記述の部分が微妙に異なっていたこともあり,今回は前者を特に参考にした.
 これも実は非常に簡単で,/lib/MT/App/Trackback.pmのソース部分(200行ちょっと越えたあたりかな)に以下のような記述を追加するだけである.なお,追加分は赤字で設定してある.

require MT::Blog;
my $blog = MT::Blog->load($blog_id);
$app->rebuild_indexes( Blog => $blog )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

$app->rebuild_entry( Entry => $entry )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

 これでトラックバック関係はほぼ大丈夫だろう.あとはトラックバックがたくさん来るのを待つだけ,か.