最新のコメントと最新のトラックバック表示の整理。

投稿日:

メインページの左サイドバーに表示させている、「最新のコメント」と「最新のトラックバック」表示を整理してみた。

手法はオーソドックスなもので、以下のようにしてみた。(スタイルシートは省略)

<h2>最近のコメント</h2>
<ul>
<MTEntries recently_commented_on="5">
<li><a href="<$MTEntryLink$>"><$MTEntryTitle trimj_to="30"$></a><br />
<MTComments lastn="5">
└ <a href="<$MTEntryLink$>#c<$MTCommentID pad="1"$>" title="<MTCommentAuthor>#<$MTCommentID$>"><MTCommentAuthor> at <$MTCommentDate format="%m/%d"$></a><br />
</MTComments></li>
</MTEntries>
</ul>

<h2>最近のトラックバック</h2>
<ul>
<MTEntries recently_pinged_on="5">
<li><a href="<$MTEntryLink$>"><$MTEntryTitle trimj_to="30"$></a><br />
<MTPings lastn="5">
 └ <a href="<$MTPingURL$>" rel="nofollow"><$MTPingBlogName$> at <$MTPingDate format="%m/%d"$></a> <br />
</MTPings></li>
</MTEntries>
</ul>

工夫は長くなりがちなエントリータイトルの文字数のトリミングで、今回はTrimj を使わせていただいた。

参考:「M's folder: MT 長いタイトルをトリミングする

当サイトのエンコードはUTF-8なので上記記事のコメントにあった、 おおたに@SimpleBoxes さんの記述をそのまま使用――テキストエディタにコピーしてmt-trimj.plの名前で保存し、plugins フォルダへ保存。

package MT::Plugin::Trimj;

use MT::Template::Context;

MT::Template::Context->add_global_filter(trimj_to => sub {
my($str, $nstr, $ctx) = @_;
my $sippo = '...';
my $lenstr = length($str);
if ($lenstr <= $nstr) { return $str; }
my $out = substr($str,0,$nstr);
if ($out !~ /[?x00-?x7F]$/) {
$out =~ s/[?xC0-?xFD]$//;
$out =~ s/[?xE0-?xFD][?x80-?xBF]$//;
$out =~ s/[?xF0-?xFD][?x80-?xBF]{2}$//;
}
$out .= $sippo; # 尻尾を付けたくない場合は、コメントアウトのこと。
return $out;
});
1;