早速たくさん投票していただきありがとうございます。 どうやら一人で何度もポチっとしてくださる方がいらっしゃるようで^^; 押した後の再構築でエラーになることが多いから、何度もやってしまうんだと思うのですけどね・・・・
さてさて、 投票結果をトップページの左側に表示するようにしたのですが、 表示順は平均点となってしまうよう。 これだと一人が "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 (投票数順) です。





コメントする