例:Google APIでFacebookページのウォールのRSSを取得してHTML出力するサンプルです。
可変グリット表示は、jquery.vgrid.jsを使用しています。ウィンドウサイズを変えると要素が自動的に並びます。
<!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" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="/content/lib/jquery/jquery.vgrid.0.1.6.min.js"></script>
<script type="text/javascript" src="/content/lib/jquery/jquery.easing.1.3.js"></script>
<!-- JS -->
<script type="text/javascript">
function formatString(str){
str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
return str;
}
function relativeTime(pastTime){
var origStamp = Date.parse(pastTime);
var curDate = new Date();
var currentStamp = curDate.getTime();
var difference = parseInt((currentStamp - origStamp)/1000);
if(difference < 0) return false;
if(difference <= 5) return "いまさっき";
if(difference <= 20) return "数秒前";
if(difference <= 60) return "1分以内";
if(difference < 3600) return parseInt(difference/60)+" 分前";
if(difference <= 1.5*3600) return "約1時間前";
if(difference < 23.5*3600) return Math.round(difference/3600)+" 時間前";
if(difference < 1.5*24*3600) return "1日前";
var dateArr = pastTime.split(' ');
return (parseInt(difference / 86400)).toString() + '日前';
}
$(function(){
});
</script>
<style type="text/css">
#grid-content {
list-style-type: none;
margin:0; padding:0;
overflow:hidden;
}
#grid-content li {
list-style-type: none;
width:200px;
border:1px dotted #ccc;
outline:1px solid #ccc;
background:#fff;
margin:5px;
padding:5px;
word-break:break-all;
box-sizing:content-box;
}
#grid-content li a {
color:#ff6699;
}
#grid-content li div {
margin:0 0 5px 0; padding:0 0 5px 0;
overflow:hidden;
border-bottom:1px dotted #ccc;
}
#grid-content li span {
font-size:80%;
color:#666;
}
#grid-content li span a {
color:pink;
}
</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>例:Google APIでFacebookページのウォールのRSSを取得してHTML出力するサンプルです。<br>可変グリット表示は、<a href="http://blog.xlune.com/2009/09/jqueryvgrid.html">jquery.vgrid.js</a>を使用しています。ウィンドウサイズを変えると要素が自動的に並びます。</p>
<!-- CODE -->
<h2 id="title"></h2>
<ul id="grid-content"></ul>
<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://www.facebook.com/feeds/page.php?id=153659178017982&format=rss20","grid-content","20"); // CNET Japan
}
function init(feedurl,obj,feedmax) {
var feed = new google.feeds.Feed(feedurl);
feed.setNumEntries(feedmax);
feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
feed.load(function(result) {
var container = document.getElementById(obj);
var mypage=result.xmlDocument.getElementsByTagName("link")[0].firstChild.nodeValue;
$("#title").html("<a href='"+mypage+"pjroom/'>"+result.xmlDocument.getElementsByTagName("title")[0].firstChild.nodeValue+"</a>");
if (!result.error) {
var items = result.xmlDocument.getElementsByTagName("item");
var s="";
for (var i = 0; i < items.length; i++) {
var title="";
var link="";
var pubDate="";
var desc="";
var author="";
//タイトル
if(items[i].getElementsByTagName("title")[0].firstChild) {
title=items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
}
//パーマリンク
if(items[i].getElementsByTagName("link")[0].firstChild) {
link=mypage+items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
}
//投稿日時
if(items[i].getElementsByTagName("pubDate")[0].firstChild) {
pubDate=items[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue;
}
//投稿内容
if(items[i].getElementsByTagName("description")[0].firstChild) {
desc=items[i].getElementsByTagName("description")[0].firstChild.nodeValue;
}
//投稿者
if(items[i].getElementsByTagName("author")[0].firstChild) {
author=items[i].getElementsByTagName("author")[0].firstChild.nodeValue;
}
if(title!=""){
s+="<li>";
s+="<div>"+desc+"</div>";
s+="<span><a href='"+link+"'>"+relativeTime(pubDate)+"</a></span> | ";
s+="<span>"+author+"</span>";
s+="</li>";
}
}
$("#grid-content").html(s).vgrid({
easeing: "easeOutQuint",
useLoadImageEvent: true,
time: 400,
delay: 20,
fadeIn: {
time: 500,
delay: 50
}
});
}
});
}
$(function(){
google.setOnLoadCallback(initialize);
});
</script>
<!-- / CODE -->
</div>
</body>
</html>