前回、Google Feed APIを利用してRecent Postsの数を増やしてみたのだが、Google Data APIの方が簡単にできることが分かった。
Google Data APIなら、クロスドメイン制限を気にせず簡単にフィードを取得できるので、以下のコード以外に他に必要なものはない。
Code
<ul id='recentPosts'></ul> <script type="text/javascript"> function getFeedList(data){ var entries = data.feed.entry, alink = '', list = []; for(var i = 0, j = entries.length; i < j ; i++ ){ var entry = entries[i]; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { alink = entry.link[k].href; break; } } list.push('<li><span class="item-title"><a href="' + alink + '">' + entry.title.$t + '</a></span></li>'); } document.getElementById('recentPosts').innerHTML = list.join(''); } (function(domain, maxResults, order, redirect){ var script = document.createElement('script'); script.setAttribute('src', 'http://' + encodeURIComponent(domain) + '.blogspot.com/feeds/' + order + '/default?redirect=' + redirect + '&max-results=' + (maxResults > 0 ? maxResults : 10) + '&alt=json-in-script&callback=getFeedList'); script.setAttribute('type', 'text/javascript'); document.documentElement.firstChild.appendChild(script); } )('yas-hummingbird', 10, 'posts', false); </script>
Usage
- 上記匿名メソッドに渡している引数を適宜書き換える。
- レイアウトの変更でHTMLウィジェットを追加する。
- 追加したHTMLウィジェットに上記のulタグとJavascriptコードを貼りつける。
引数:
- ブログ ドメイン
- 例: 'yas-hummingbird'
- 取得する投稿数
- 0以上の数値で
- 取得するフィードの種類
- 'posts' or 'comments'
- リダイレクト
- リダイレクトの設定をされている方用に。
フィードの種類を'comments'にするとコメントフィードを取得することもできます。
Otherwise
<script src="http://yas-hummingbird.blogspot.com/feeds/posts/default?max-results=10&redirect=false&alt=json-in-script&callback=getFeedList"></script>
もし、上記のscriptタグの内容が理解できるなら、上記の匿名メソッドを削除して、このスクリプトタグを追加する方が簡潔になる。
要するに、上記の匿名メソッドはこのスクリプトタグを生成しているわけで、どちらかを選んで使ってね、ということです。
スクリプトタグに差し替えた場合の例
<ul id='recentPosts'></ul> <script type="text/javascript"> function getFeedList(data){ var entries = data.feed.entry, alink = '', list = []; for(var i = 0, j = entries.length; i < j ; i++ ){ var entry = entries[i]; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { alink = entry.link[k].href; break; } } list.push('<li><span class="item-title"><a href="' + alink + '">' + entry.title.$t + '</a></span></li>'); } document.getElementById('recentPosts').innerHTML = list.join(''); } </script> <script src="http://yas-hummingbird.blogspot.com/feeds/posts/default?max-results=10&redirect=false&alt=json-in-script&callback=getFeedList"></script>
jQueryで書いてみる
<ul id='recentPosts'></ul> <script type="text/javascript"> (function($){$.extend({ // domain : blog domain bloggerFeed: function(domain, options, callback){ var opt = $.extend({ 'max-results': 10, 'redirect': false, 'alt': 'json-in-script' }, options); callback = $.isFunction(options) ? options : callback || function(){}; $.getJSON('http://' + domain + '.blogspot.com/feeds/posts/default?callback=?', opt, function(data){ if(data) callback.call(this, data.feed); }); } })})(jQuery); $(function(){ $.bloggerFeed('yas-hummingbird', {'max-results': 15}, function(feed){ $('#recentPosts').append( '<li>' + $.map(feed.entry, function(entry, i){ return '<span class="item-title"><a href=\'' + (function(links){ for (var k = 0; k < links.length; k++) { if (links[k].rel == 'alternate') { return links[k].href; } } return ''; })(entry.link) + '\'>' + entry.title.$t + '</a></span>'; }).join('</li><li>') + '</li>'); }); }); </script>
0 Comments:
コメントを投稿