PHP & JavaScript Room :: 設置サンプル

実行結果

設置サンプル

例: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 &amp; 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>