守破離でいこう! -Let's go with SyuHaRi!-

2008/02/04

Bloggerでのラベル一覧表示スクリプトを修正しました

以前、[再] Bloggerのクラシックテンプレート(FTP公開)でもラベル一覧を表示したいを紹介したのですが、BloggerのAPIでエラーが発生してしまい、動作しなくなってしまったので修正しました。

具体的には、
http://www.blogger.com/feeds/UserID/blogs/BlogID?alt=json-in-script&callback=listLabels
とリクエストしても、次のエラーが表示されます。
The 'callback' parameter is only supported on feeds.

この現象は、どうやらBloggerAPIの問題として投稿されているようです。
Public Metafeed Callback Error - Blogger Data API | Google グループ
Issue 341 - gdata-issues - Google Code

[再] Bloggerのクラシックテンプレート(FTP公開)でもラベル一覧を表示したいでは、アップデートとしてユーザのブログ一覧から絞り込む方法を紹介しましたが、Google グループのコメントにもあるように、callbackパラメータを省略した場合にデフォルトで設定される gdata.io.handleScriptLoaded を自身で定義することでも対応できます。

var gdata = function() {}
gdata.io = function() {}
gdata.io.handleScriptLoaded = function(root) {
 var baseURL = '/blogs/ishikawa/labels/';
 var baseHeading = "ラベル";
 var isFTP = true;
 var llDiv = document.getElementById('labelList');
 var h2 = document.createElement('h2');
 h2.className = 'sidebar-title';
 var h2t = document.createTextNode(baseHeading);
 h2.appendChild(h2t);
 llDiv.appendChild(h2);
 var ul = document.createElement('ul');
 ul.id = 'label-list';
 var regBlogId = new RegExp(/blog-(\d+)/);
 var labelSort = new Array();
 var entry = root.entry;
 for (var p in entry.category) {
  var category = entry.category[p];
  labelSort[labelSort.length] = category.term;
 }
 labelSort.sort();
 for (var r=0; r < labelSort.length; r++){
  var li = document.createElement('li');
  var a = document.createElement('a');
  var label = new String(labelSort[r]);
  var l = encodeURIComponent(label);
  if (isFTP) {
   if (label.indexOf('Blogger') >= 0) {
  l = l.replace(/%/g, '=');
   } else if (encodeURIComponent(label.replace(/[!-~\s]/g, '')).indexOf('%', 0) >= 0) {
  l = Base64.encode(new String(label));
  l = l.replace(/\//g, "__");
   }
  }
  a.href = baseURL + l +'.html';
  a.innerHTML = label + ' ';
  li.appendChild(a);
  ul.appendChild(li);
  abnk = document.createTextNode(' ');
  ul.appendChild(abnk);
 }
 llDiv.appendChild(ul);
}
</script>
<script type="text/javascript" src="http://www.blogger.com/feeds/08755644619888194912/blogs/1303966254927872449?alt=json-in-script" ></script>

しばらくは、様子を見る必要がありそうです。

ラベル:

automatically translated by Google Translate Hack!

naoki 22:04
HaloScan: |

0 Comments:

Add a comment