はてブの人気記事のランキングを先日までJavascriptで書いていたのですが、
amazonのウィジェットを導入したところ、
chromeで人気記事のJsが動かなくなってしまったので、
PHPで実装しなおしました。
以下が実際にサイトで使用しているコードです。
ソースコード
hatena_read("http%3A%2F%2Fwebdelog.info"); //人気記事を読み込みたいサイトのurl function hatena_read($url){ $target_url="http://b.hatena.ne.jp/entrylist?sort=count&url=".$url."&mode=rss"; $s = simplexml_load_file($target_url); $roop = 0; $pattern = "/ | WebDelog/"; //エントリー名から取り除きたい文字を指定しています。 foreach($s as $val){ if($roop != 0 && $val->link != $url ){ //最初に入っているサイト情報、インデックスを省きます。 $result = $val -> title; $result2 = preg_split($pattern, $result); $link = $val -> link; echo '<p><a href="http://b.hatena.ne.jp/entry/'.$link.'">/'; echo '<img src="http://b.st-hatena.com/entry/image/'.$link.'" />'; echo '</a>'; echo '<a href="'.$link.'">'.$result2[0].'</a></p>'; } $roop = +1; } }
自分のサイトの場合、各ページにタイトルが入っているので、
それを取り除く処理を途中で行っています。
それ以外は特にこれといって難しいことはしていませんので、簡単に実装できると思います。
ちなみに、以前のJs版は下記のように書いていました
まずこれを読み込んでおいて、<script src="http://www.google.com/jsapi"> google.load("feeds", "1"); </script>
その後に下記のコードを書きます。
(function(){ google.setOnLoadCallback(initialize);function initialize() { var rss = "http://b.hatena.ne.jp/entrylist?sort=count&url=http%3A%2F%2Fwebdelog.info&mode=rss"; var feed = new google.feeds.Feed(rss); feed.setNumEntries(7); feed.load(feedLoaded); }
// Our callback function, for when a feed is loaded. function feedLoaded(result) { if (!result.error) { var container = document.getElementById("popular"); for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var p = document.createElement("p"); var a = document.createElement("a"); a.href = entry.link; var image = document.createElement("img"); var splits = entry.title.split(" ", 1); image.src = 'http://b.st-hatena.com/entry/image/'+entry.link; p.appendChild(image); p.appendChild(a); a.appendChild(document.createTextNode(splits)); container.appendChild(p); } } } });
なぜjQueryを使わなかったのはわかりません。
たぶん気分的なものだと思います…
jQueryを使ってはてブのランキングを作る記事はsoraiyさんの記事のものがとてもわかりやすかったので、
参考ページとして下記に掲載させて頂きました。