各種ニュースサイト(CNET、Google Japan Blog、ITmedia)のRSSフィードを取得して、新着情報3件をHTML出力します。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="imagetoolbar" content="no" />
<title>設置サンプル</title>
<link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
<!-- JS -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAAvABrzCnRluKK0Cj97fTMThTNR7aHVSEFb0WbViWwc6F-_w9PjBSogZu_7UgOTbx25ka46X-fnGmyvw"></script>
<script type="text/javascript">
google.load("feeds", "1");
function initialize(){
init("http://feeds.japan.cnet.com/cnet/rss","feed1","2"); // CNET Japan
init("http://feeds.feedburner.com/GoogleJapanBlog","feed2","3"); // Google Japan Blog
init("http://rss.itmedia.co.jp/rss/1.0/topstory.xml","feed3","3"); // ITmedia
}
function init(feedurl,obj,feedmax) {
var feed = new google.feeds.Feed(feedurl);
feed.setNumEntries(feedmax);
// フィードをJSON形式で取得
feed.load(function(result) {
var container = document.getElementById(obj);
if (!result.error) {
var h2 = document.createElement("h2");
h2.appendChild(document.createTextNode(result.feed.title));
container.appendChild(h2);
var dl = document.createElement("dl");
container.appendChild(dl);
//alert(result.feed.entries);
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var attributes = ["title", "link","content","contentSnippet","publishedDate","categories"];
var dt = document.createElement("dt");
var dd = document.createElement("dd");
var a=document.createElement("a");
for (var j = 0; j < attributes.length; j++) {
switch(attributes[j]){
case "title":
a.appendChild(document.createTextNode(entry[attributes[j]]));
break;
case "link":
a.setAttribute("href",entry[attributes[j]]);
break;
case "content":
//dd.appendChild(document.createTextNode(entry[attributes[j]]));
break;
case "publishedDate":
var date = new Date(entry[attributes[j]]);
var dateY=date.getFullYear();
var dateM=date.getMonth()+1;
var dateD=date.getDate();
var str=dateY+"年"+dateM+"月"+dateD+"日";
dt.appendChild(document.createTextNode(str));
break;
case "contentSnippet":
//alert(entry[attributes[j]]);
break;
case "categories":
var categories=entry[attributes[j]];
break;
default:
break;
}
container.appendChild(dt);
dd.appendChild(a);
container.appendChild(dd);
}
}
}else{
container.appendChild(document.createTextNode(url));
}
});
}
google.setOnLoadCallback(initialize);
</script>
<!-- CSS -->
<style type="text/css">
.feed {
border:1px solid #ccc;
background-color:#fff;
margin:10px auto; padding:10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
}
.feed h2 {
margin:0 0 10px 0; padding:0;
}
dl {
margin:0; padding:0;
}
dt {
margin:0; padding:0;
color:#666;
font-size:.8em;
}
dd {
margin:0 0 5px 0; padding:0;
}
</style>
<link rel="stylesheet" type="text/css" href="/common/css/example.css"></head>
<body id='example3' class='example'><div class="ads" style="margin:32px auto;text-align:center;"></div><h1 class='h'><a href='/'>PHP & JavaScript Room</a> :: 設置サンプル</h1>
<h3 class='h'>実行結果</h3>
<div id="wrap">
<h1>設置サンプル</h1>
<p>参考:<a href='http://code.google.com/intl/ja/apis/ajaxfeeds/'>Google AJAX Feed API</a></p>
<h2>JSON形式の例</h2>
<p>各種ニュースサイト(CNET、Google Japan Blog、ITmedia)のRSSフィードを取得して、新着情報3件をHTML出力します。</p>
<!-- CODE -->
<div id="feed1" class="feed"></div>
<div id="feed2" class="feed"></div>
<div id="feed3" class="feed"></div>
<!-- / CODE -->
</div>
</body>
</html>