といっても、実はこの手のプラグインとしてはAOINA.COMさんの被ブックマーク数表示+ランキング生成プラグインというのが既に存在していて、私も今までコレを利用させていただいていました。
ただ、このプラグインはアクセスの際にブックマーク数を記録し、それをデータベース化するため、アクセスのないエントリはランキング対象外になりますし、ランキング生成の機能だけを使いたい場合でも、ヘッダ部分に被ブックマーク数表示する時用のスクリプト+スタイルシートが読み込まれてしまうのが少し難点と言えば難点です1
はてブでは、被ブックマーク数順に並び替えたRSSが取得できるので、それを利用してPHPで以てパースして、テーブルに変換することにしました。
てことで、ページを作ってそこでPHPスクリプトを動かす算段ですので、動作にはrunPHPが必須です。プラグインにするモチベーションがないのでこんな形ですが、よければどうぞ。
デモはこのサイトの記事一覧に表示しています。
コード自体はこんな感じ。あんまり下位のヤツまで呼び出さないように20位までに制限していますが、foreach()で回せば全順位が表示できます。あと、function getBookmarkNum($url)はスキンのfunction.phpとかに書いておくと、スキンの中でこの関数が呼び出せて便利ですよ、私は実際に組み込んでます。
<table summary="このサイト内において、はてなブックマークでブックマークされた記事ランキングを表示しています">
<thead><tr>
<th>被ブックマーク数</th>
<th>対象記事</th>
</tr></thead>
<tbody>
function getBookmarkNum($url){
$params = array( new XML_RPC_Value($url, 'string') );
$msg = new XML_RPC_Message('bookmark.getCount', $params);
$client = new XML_RPC_Client('/xmlrpc', 'b.hatena.ne.jp');
$response = $client->send($msg);
if (!$response){
echo 'Communication error: ' . $client->errstr;
exit;
}
if (!$response->faultCode()){
$val = $response->value();
$data = XML_RPC_decode($val);
$num = $data[$url];
$str = '<a href="http://b.hatena.ne.jp/entry/' . $url . '" rel="bookmark" title="この記事の被ブックマーク数">'.
'<span class="bookmark-count';
// ブックマーク数に合わせてクラス名を変更
if ($num >= 100) $str .= ' red-hotentry';
elseif ($num >= 10) $str .= ' hotentry';
$str .= '">'.$num .'</span></a>';
return $str;
}else {
return "0";
}
}
function convert($str) {
return mb_convert_encoding($str, mb_internal_encoding(), "auto");
}
$bookmark_feed = "http://b.hatena.ne.jp/entrylist?mode=rss&url=".htmlspecialchars(get_bloginfo('url'))."&sort=count&threshold=3";
$article = simplexml_load_file($bookmark_feed);
for ($i=0; $i<=20; $i++){
if ( convert($article->item[$i]->link) != get_bloginfo('url')."/" ){
// サイト名を取り除いて、記事名だけにする
// $entry_title = preg_replace("/Liner (N|n)ote (-|») /", "", convert($article->item[$i]->title));
echo "<tr>\n";
echo "<td>". getBookmarkNum(convert($article->item[$i]->link)) . "</td>\n";
echo '<td><a href="' . convert($article->item[$i]->link) . '">' .$entry_title. "</a></td>\n";
echo "</tr>\n";
}
}
</tbody>
</table>付け加えておくと、このプラグインを使うデメリットとして
というのがあります。こうしてみると、あんまりいいとこないかもしれませんが、WordPressのバージョンアップで動作しなくなることもなく安心して使えるのはメリットだと思いますよ。
Popularity: 2% [?]
- まぁ、フィルターから外せばいいわけですが。[戻る]
- もっともよほどイレギュラーなブログでない限り、上位に単体記事以外の物が混じることはあんまり無いと思いますが[戻る]
- フラグメントID付きでブックマークした人とか[戻る]
- キーワード:




読者のコメント
0件