
サイト内の記事をツイート数でソートし、ランキング形式で出力してくれるjsを、弊社エンジニアチームが作ってくれたので紹介します!
概要
サイト内の記事をツイート数でソートして、ツイート数の多い順番に一覧として出力します。
形式はリスト(dl dt dd)形式で、dlにツイート数、ddに記事urlにリンクされている記事タイトルが表示されます。
JSコード
以下jsコードになります。
<script language="JavaScript" type="text/javascript">
//perpage 取得件数を設定
//q にURLをsite:hogehoge.com形式で入れる
//window 期間を指定
var req = "http://otter.topsy.com/search.js?perpage=20&callback=?"+
"&window=a&q=site:hogehoge.com";
function renderTweets(res) {
//console.log(res);
var i, tweet, len = res.list.length, container = $('#tweet_rank');
if(!len){$('<dt />').text("tweetがありません。").appendTo(container);return;}
res.list.sort ( function (b1, b2) { return b1["trackback_total"] < b2["trackback_total"] ? 1 : -1; } );
//表示件数を調整する場合は、for文のlenで制御
for(i=0; i<5/*len*/; ++i) { //表示が5行なので5で固定
tweet = res.list[i];
var count = $('<dt />')
.text(tweet.trackback_total + " tweets");
var title = tweet.title;
//タイトル文字数を丸める処理
if (title.length>30) title = title.substring(0,29) + "…";
var text = $('<a>')
.attr({ href: tweet.url, target: "_blank" })
.text(title);
var text = $('<dd class="tweet-title">')
.append(text);
$(container)
.append(count)
.append(text);
}
}
$(document).ready(function() {
$.getJSON(req, function(res){ renderTweets(res.response); });
});
</script>
解説
まずは上記のコードを
<head> </head>
に追加します。
1.perpageに取得件数を追加する
上記のコードでは20という値が設定されています。
変えなくても動作しますが、一覧表示したい記事の数より大きい数字にする必要があります。
2.hogehoge.comの部分をサイトのurlに変更します。
3.#tweet_rankが入ってる部分に任意のIDを設定します。
html側の設定
実際にリストを表示したいところに下記の様にコードを追加します。
<dl id="tweet_rank"> </dl>
これで設定は完了です。ツイートでソートされた記事一覧が出力されるはず。。。
参考URL
Topsy’s Otter APIを使ってTweet数の多い記事をブログから抽出してリスト表示
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。