php
今まで苦戦していた、RSSのfeed。
ブログの新着が自サイトで見られるのですごく便利なのでよくつかうのですが、最近はGoogleのAPIで簡単にできるので
実践。
しかしうまくいかず・・・。
成功例はこちら。
google.load("feeds", "1"); var entryArray = new Array(); var entryNum = 0; // alert(entryArray.length); function initialize() { feedAdd('http://www.***.jp/?feed=rss2',0); feedAdd('http://www.***.jp/?feed=rss2',0); feedAdd('http://www.***.jp/?feed=rss2',1); //最後のブログは1にする } //取得するフィードの追加(rssUrl:フィードのURL , boolNum:追加するフィードURLが最後の場合「1」を入れる) function feedAdd(rssUrl, boolNum) { var feed = new google.feeds.Feed(rssUrl);//フィードの取得 feed.setNumEntries(2);//ブログ1つあたりの取得するフィード数 feed.load(function(result) { if (!result.error) { for (var i = 0; i < result.feed.entries.length; i++) { entryArray.push(result.feed.entries[i]); var date = new Date(result.feed.entries[i].publishedDate); entryArray[entryNum].sortDate = ( date.getFullYear()*10000 ) + ( (date.getMonth() + 1)*100 ) + date.getDate();//ソート用(日付)を連想配列に代入 entryArray[entryNum].blogName = result.feed.title;//ブログ名を連想配列に代入 entryNum+=1; } } if(boolNum==1){ feedOutput("feed", 3);//フィードの出力 } }); } //フィードの出力(feedId:出力するオブジェクトのID , listNum:出力するリスト数。「0」の場合全て) function feedOutput(feedId, listNum){ var useFeed = ""; var blogimg = ""; var container = document.getElementById(feedId);//表示部分を選択 entryArray = asort(entryArray, "sortDate");//日付でソート if(listNum==0){ listNum = entryNum; } for (var i = 0; i < listNum; i++) { var entry = entryArray[i]; var date = new Date(entry.publishedDate);//日付の表示変更 str = entry.link; if(str.match(/***/i)) { //それぞれのブログにアイコンをつける blogimg = '<img src="http://www.***/pic1.jpg">'; } else if (str.match(/***/i)) { blogimg = '<img src="http://www.***/pic2.jpg">'; } else { blogimg = ''; } useFeed += '<table width="230" height="60" border="0" cellpadding="0" cellspacing="0" bgcolor="#F3F3F3"><tr><td width="70" height="60" rowspan="2" align="center">' + blogimg + '</td><td width="160" height="20" valgin="top" align="left" style="line-height:18px;"><a href="' + entry.link + '" target="_blank">' + entry.contentSnippet.substr(0,20) + '...</a><BR></td></tr><tr><td valign="top" align="left">' + date.getFullYear() + '年' + (date.getMonth() + 1 ) + '月' + date.getDate() + '日</td></tr></table>';//HTMLで書き出し } container.innerHTML = useFeed; } function asort(myArray, key){ //return myArray.sort ( function (b1, b2) { return b1[key] > b2[key] ? 1 : -1; } );//昇順 return myArray.sort ( function (b1, b2) { return b1[key] > b2[key] ? -1 : 1; } );//降順 } google.setOnLoadCallback(initialize);
こんな感じになって、
吐き出し部分は、
<div id="feed"> </div>
これだけ。
この間に、読み込み中の画像を入れるとそれっぽくていいです!
しかし・・・
同じものを2個使いたくて、同じコードを下に連続していれて、変数変えてもうまく動かず・・・。
う〜〜〜ん・・・・
1個にまとめろ、って感じではありますがあえてやりたいし検証中。
参考サイト:http://www.ajaxtower.jp/googleajaxfeed/
http://d.hatena.ne.jp/kudakurage/20090728/1248781127