今ではもうプラグインなしで「最近のトラックバック」も表示できている当ブログですが、トラックバックの並び順を「最近のコメント」と揃えようとして、「記事グループの中で一番新しいトラックバックが下に来る」ように変更してみました(最近のコメントでは新しいコメントが下につくようにしている)。
ブログ記事 └ トラバ2008.8 new └ トラバ2008.5 └ トラバ2007.9 └ トラバ2007.2 |
>> | ブログ記事 └ トラバ2007.2 └ トラバ2007.9 └ トラバ2008.5 └ トラバ2008.8 new |
そしたら古いトラックバック(それもすごく古い)が先に目に入って、新しいトラックバックが目立たなくなってしまったような(^^;。これまでの表示形式では「最近トラックバックのあったブログ記事に所属するトラックバック」になっていて、本当の意味での「最近のトラックバック」になっていなかったことに今さらながら気が付きました。
そこで少し発想を変えて、「最近のトラックバックだけを記事ごとにまとめて表示する」方向へ修正してみました。以下の条件を満たすように組んであります。
- 最近のトラックバックを指定した数だけ表示する。
- 同じ記事に所属するトラックバックは記事ごとにまとめて表示する。
- 記事はトラバ新着順に表示。 最新のトラックバックがあった記事が常にトップに出る。
タグの見本は以下。こちらをベースに少し修正を加えたものです。赤字の部分で表示したいトラックバックの件数を指定します。マークアップはお好みで。
<MTSetVar name="pingcount" value="10">
<MTPings lastn="$pingcount" sort_order="descend">
<MTPingsFooter><MTSetVarBlock name="lastping"><MTPingDate format="%Y%m%d%H%M"></MTSetVarBlock></MTPingsFooter>
</MTPings>
<MTPings lastn="$pingcount" sort_order="descend">
<MTPingsHeader><dl></MTPingsHeader>
<MTPingEntry>
<MTSetVarBlock name="thiseid">-<$MTEntryID$>-</MTSetVarBlock>
<MTUnless name="pingid" like="$thiseid">
<dt><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></dt>
<MTPings>
<MTSetVarBlock name="thisping"><MTPingDate format="%Y%m%d%H%M"></MTSetVarBlock>
<MTIf name="thisping" ge="$lastping">
<dd><a href="<$MTPingURL$>" title="<$MTPingTitle$>"><$MTPingBlogName$></a> <$MTPingDate format="%y/%m/%d"$></dd>
</MTIf>
</MTPings>
</MTUnless>
<MTSetVarBlock name="pingid"><MTGetVar name="pingid"><MTGetVar name="thiseid"></MTSetVarBlock>
</MTPingEntry>
<MTPingsFooter></dl></MTPingsFooter>
</MTPings>
説明。
最初に最新から10件目(赤字で指定した件数)のトラックバックの送信日時を取得。これを後で制御用に使います。
pingid変数で重複するブログ記事を取り除いているのはこちらと同じです。
<MTPingEntry>内の<MTPings>で、最初に取得した10件目のトラバ送信日時より新しいトラックバックだけを表示するようにしています。これで結果として「最新10件のトラバのみを表示」できたことになります。
*lastnモディファイアでループの件数をきちんと制御できているので、動作もそれなりに軽いと思います。
*バージョン制限のあるタグやモディファイアは使ってないので、4.0から使えると思います。
静・動、両方で同じ動作になることを確認しています。
実際にアーカイブ頁でこのタグ組みを使った「最近のトラックバック」を使用してます(マークアップは変更してます)。動作サンプルとして見てみて下さい。
<2008.8.23 修正>記事ID識別記号を全角から半角へ変更。