にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 |

10年ぶりに部屋に入るとコウモリや猫の巣窟だった

Nucleus CMS

2009-03-17 18:47:07 JST-9 | akebia | Nucleus | コメント | トラックバック | 履歴

NP_Popularity.php

人気記事のリストを作成し、挿入します。

これは、NP_znPopularityをベースに作ったものですが、データベースのテーブルを別にし、タグの書式が変えてあるので、NP_znPopularityとは互換性がありません。NP_znPopularityは記事を表示回数順に並べますが、これだと、新しい記事の人気が古い記事の人気になかなか追いつけない傾向が出てきます。そこで、NP_Popularityでは、単なる表示回数ではなく、表示回数とその記録時刻から算出した、平均表示回数(スコア)順に記事を並べるようにしてみました。おまけに、不人気記事のリストを作る機能も付けてみました。

簡単な使い方

<%Popularity%>

先ず、上記のタグをテンプレートのアイテム部分に置きます。これで、データベースにアイテムの表示回数とスコア(このプラグインでは、平均表示回数の事を「スコア」と呼んでいます。)が記録されるようになります。スコアは人気記事のリストが表示された時でなくて、記事そのものが表示された時に計算されます。したがって、表示回数が増えずに時間が経つと自動的にスコアが減って行くということはありません。

<%Popularity(lisc,10)%>

次に、上記のタグをスキンに置きます。すると、その場所に人気記事のリストが表示されます。このタグはテンプレートに置くこともできます。不人気記事のリストにしたい場合には、タグを「<%Popularity(lisc,-10)%>」にするとよいです。

記事のタイトルの横に、括弧で囲まれた分数のようなものが表示されますが、これの意味は、「(スコア/表示回数)」です。

デフォルトの状態だと、記事にアクセスがあっても、人気記事リストに表示されるまで20分以上かかります。なかなか表示されない場合には、一度アクセスし、20分以上待ってから、別のIPアドレスのコンピュータからアクセスしてみて下さい。それでも表示されない場合には、もう一度、元のコンピュータに戻ってアクセスし、それから、別のIPアドレスのコンピュータからアクセスしてみて下さい。急ぐ場合には、プラグインのオプションをいじってなんとかして下さい。

タグのパラメータの説明

<%Popularity(order,num,catid,blogid)%>
order
このタグが何に置き換わるかを示します。以下の値を指定できます。
score
スコア
views
表示回数
lisc
記事のリスト(スコア順)
livi
記事のリスト(表示回数順)
scoreとviewsは現在表示されようとしている記事の情報を出力するので、テンプレートのみで有効です。その他は、テンプレートとスキン、どちらでも使えます。
num
記事のリストを出力する場合の出力件数です。この値を正数にすると、スコアや表示回数の値が大きな順に記事を出力します。この値を負数にすると、スコアや表示回数の小さな順に記事を出力します。前者が人気記事リスト、後者が不人気記事リストということになります。ただし、現在のところ、双方のリストで重複した記事を処理する機能は無いので、双方のリストに同じ記事が表示されてしまうことがあります。
catid
カテゴリID
blogid
ブログID

カテゴリIDやブログIDを省略した場合には、現在のブログとカテゴリに関する記事の情報を出力します。常に全てのカテゴリに関する情報を出力したい場合には、カテゴリIDを「0」にするとよいです。

プラグインのオプションの説明

スコア計算時、アイテムの表示回数に乗ずる数(秒)
スコアは「表示回数×乗数÷(現在時刻-記録開始時刻)」の式により計算されていて、このオプションで指定するのは、この式の「乗数」の値です。各時刻(UNIXタイムスタンプ)の単位は「秒」です。したがって、たとえば、10日間の表示回数の平均をスコアとしたい場合には、このオプションの値を「864000」にすればよく、これがデフォルト値となっています。日ごろアクセス数が多いブログではこの値を小さくし、アクセス数が少ないブログではこの値を大きくするといった風に調節するとよいかもしれません。ちなみに、「記録開始時刻」というのは記事が初めて表示された時刻で、これは一度記録されるとデータベースが削除されるまで固定されています。
スコア計算に必要な最低期間(秒)
これは、1つ上のオプションの説明の計算式の「(現在時刻-記録開始時刻)」の部分の計算結果の必要最低値です。計算結果がここで指定された値に満たない場合、その記事のスコアは「-1」になり、スコア順リストに表示されなくなります(表示回数順リストには表示されます)。この値が小さすぎると、表示回数が少ないのにスコアが飛びぬけて大きくなり、大きすぎると、スコア順リストに表示されるまで時間がかかりすぎます。デフォルトは「1200」(20分)です。ちなみに、計算式のような計算が行われるのは、表示回数が「2」以上の時です。表示回数が「1」の時、スコアは常に「0」になります。したがって、デフォルトの設定の場合、1回目のアクセスで不人気リストに表示され、20分経たずに2回目のアクセスがあるとリストから消えることになりますが、それで正常です。
ハイスコア順のリストに出力するアイテムの最低表示回数
これは、あけび猫は、表示回数に対してスコアがやけに大きな記事をスコア順の人気リストに表示されにくくするのに使っています。また、更新が頻繁なブログで、新着記事にアクセスが多く、人気記事リストが新着記事で埋まってしまうのを軽減するのにも使えるかもしれません。デフォルトは「4」です。
ロースコア順のリストに出力するアイテムの最低表示回数
これは、表示回数に対してスコアがやけに大きな記事をスコア順の不人気リストに表示されにくくするのに使えると思いますが、そうすると、その分、表示回数の少ない記事が不人気リストに表示されなくなり、アクセスの少ない記事を目立たせて発掘させるという不人気リストの効果が薄れるかもしれません。また、記事の数が十分多く、アクセスが増えてくれば、やけに大きなスコアの記事が不人気記事リストに表示されることは、なくなってくるでしょう。デフォルトは「1」です。

その他のオプションについては、オプション名からして動作を察して下さい。

このプラグインによって、新しい記事の人気が古い記事の人気になかなか追いつけない傾向は解消されるかもしれませんが、今度は、このプラグインを導入する前に書いた記事の人気(スコア)が、このプラグインを導入した後に書いた記事の人気になかなか追いつけない傾向が出るかもしれません。これは、そのブログのフィードを購読している人がたくさん居る等の原因で、新着記事にアクセスが集中するブログで顕著になるかもしれません。現在の所、この問題の解決のための機能は、このプラグインには付いていません。

ドラフトの記事へのアクセスについて

v1.3では公開前の記事へのアクセスも人気に反映されていましたが、v1.4では公開前の記事へのアクセスは人気に反映されなくなりました。v1.4では、公開した記事をドラフトに戻した後にその記事を公開したり更新すると、その記事に対応するそれまでのアクセスの記録はすっかり削除されるのでご注意下さい。

バージョン履歴

1.4
公開前の記事へのアクセスが人気に反映されないようにした。SqlApiに対応。
1.3
ドラフトの記事を記事のリストに表示しないようにしました。また、記事が削除された時に、データベースから表示回数やスコアの記録を削除するようにしました。…ということは、今までは記事が削除されてもこれらの記録が残ったままだったということですが、これは自動的には削除されないので、削除するには、データベースにて「DELETE v FROM nucleus_plugin_popularity v WHERE v.id NOT IN (SELECT i.inumber FROM nucleus_item i)」を実行するとよいと思います。テーブルプリフィックスを使ってる場合、「nucleus_plugin_popularity」と「nucleus_item」を実際のテーブル名に修正して下さい。

MyMiniCity 人気ブログランキングへ

  1. 頻度 タイムスタンプ スコア 計算 (2)
  2. NP_Popularity (1)
  3. NP_znPopularity (1)

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/akebia/