MTVote の出力順をカスタマイズする

早速たくさん投票していただきありがとうございます。 どうやら一人で何度もポチっとしてくださる方がいらっしゃるようで^^; 押した後の再構築でエラーになることが多いから、何度もやってしまうんだと思うのですけどね・・・・
さてさて、 投票結果をトップページの左側に表示するようにしたのですが、 表示順は平均点となってしまうよう。 これだと一人が “5″ を投票したページのほうが、 十人が “4″ を投票したページの上にいってしまう。 なんかおかしいなと思い、 総合点順で並べ替えを行うように改造します。 ついでに、 平均や投票者数でも並べ替えられるようにしちゃいましょう。
変えるのは、 votes.pl と結果表示用のタグです。
まず、 votes.pl です。 40行目付近にあるこんな記述を見つけます。

my @topVotes = sort
{ $totalVoteData{$b}->{average} <=> $totalVoteData{$a}->{average} } keys %totalVoteData;

これを、下のように置き換えます。 太字が変更箇所です。

my $sortkey = $args->{key} || “value”;
my @topVotes = sort
{ $totalVoteData{$b}->{$sortkey} <=> $totalVoteData{$a}->{$sortkey} } keys %totalVoteData;

次に投票結果を出力するページには、下記のようなタグを追加しています。

<MTEntries limit=”1″>
<ol>
<MTVotes lastn=”10″ key=”value”>
<li><a href=”<$MTEntryPermalink$>” target=”_blank”
title=”<MTVoteNumber>人評定<平均>MTVoteAverage lastn=”300″>点)”>
<$MTEntryTitle trimj_to=”15″$></a><<MTVoteTotalValue>)
</li>
</MTVotes>
</ol>
</MTEntries>

新たに、 <MTVotes> タグに key が追加しました。 ここでソート順を指定します。 指定しない場合は、 総得点順に多いほうから並べて出力します。 key に指定できるのは、 value (総合点順)、 average (平均点順)、 total (投票数順) です。
今回も「やむやむ」さんのページと、 「VS再構築」さんのページを参考にさせていただきました。 ありがとうございます。

関連した記事:


投稿時刻: 5:26 AM | カテゴリー: Blog | パーマリンク

MTVote の出力順をカスタマイズする” への1件のコメント

  1. MTvote でアクセス制限&投票データのクリア

    MTvoteを付けたのは良いのだけれど、 なんだかよくわからない記事にたくさん投票されてます。 アクセスログを見てみると、 どうもクローラー(ボット)から…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">