• 締切済み

Google Feed APIの表示について

複数ブログの新着RSSを、自分のHPに表示させたいと考えております。 <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("feeds", "1"); var getRssFeed = function (_id, _urls, _length) { if(!_id || !_urls || (!(_urls instanceof Array))) return; //変数 var entriesArray = new Array(); var complete = 0; //読み込み var init = function () { for (var e = 0; e < _urls.length; e++) getFeed(_urls[e], e) }; function getFeed(_url, _num) { var feed = new google.feeds.Feed(_url); if(_length) feed.setNumEntries(_length); feed.load(function(result) { if (!result.error) { html = '<h2>' + result.feed.title + '</h2>'; html += '<ul>'; for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var pdate = new Date(entry.publishedDate); var Y = pdate.getFullYear(); var m = pdate.getMonth() + 1; m = (m < 10)? '0' + m:m;//月数字を2桁に var d = pdate.getDate(); d = (d < 10)? '0' + d:d;//日数字を2桁に var date = Y + '/' + m + '/' + d; html += '<li>'+ date +' <a href="' + entry.link + '" target="_blank">' + entry.title + '</a>'; html += '</li>'; } html += '</ul>'; entriesArray[_num] = html; complete++; if(complete == _urls.length){ echo(); } } }); }; //出力 var echo = function () { var container = document.getElementById(_id); for (var e = 0; e < _urls.length; e++) container.innerHTML += entriesArray[e]; }; google.setOnLoadCallback(init); }; getRssFeed("feed", [ 'RSS1', 'RSS2', 'RSS3', 'RSS4' ], 3); getRssFeed("feed", [ 'RSS5', 'RSS6', 'RSS7', ], 3); </script> <body> <div id="feed"></div> </body> 現在、上記のようになっておりますが、後半の getRssFeed("feed", [ 'RSS1', 'RSS2', 'RSS3', 'RSS4' ], 3); が、Feedが4つまでではないと何も表示されなくなってしまうので Feed4つ区切りのものを複数書いている状態ですが、リロードをするたびに RSS5~7のブロックが上にきたりと、表示順序が変わってしまいます。 リロードしても表示順序はRSS1~4、その下にRSS5~7のように きちんと固定したいのですが、これは可能でしょうか? Javascriptについては完全に初心者です。 お手数おかけしますがご回答をお願いします。 ここまでの内容は http://indigonote.com/2011/06/16/google-feed-api-customize/ 上記サイト様を参考にさせていただきました。

みんなの回答

  • warpspace
  • ベストアンサー率56% (83/147)
回答No.1

以下のように、feer1とfeed2に分ければよいのでは?。 getRssFeed("feed1", [ 'RSS1', 'RSS2', 'RSS3', 'RSS4' ], 3); getRssFeed("feed2", [ 'RSS5', 'RSS6', 'RSS7', ], 3); <body> <div id="feed1"></div> <div id="feed2"></div> </body>