以前この投稿で作成した、
Blogger投稿表示一覧に更新日を付加して更新しました。
以下がそのページです。
ほるめすメモ帳inBlogger - 投稿一覧
iPhone、PCSafari、Firefoxでどうぞ。(IE6,7不可、IE8はリスト表示のみ)
更新日も記事の情報として、APIで取得できます。
var blogUpdated = post.getUpdated().getValue().getDate();
実際には、以下のように出力されるので、少しいじる必要があります。
Sat Sep 05 2009 20:39:09 GMT+0900
上の「blogUpdated」はDate型なので、「toString()」で型変換し、
それを更に「.split(' ');」によって分割しています。
更に更に、曜日と月が英語のままではわかりづらいので、
Switch文でこつこつと日本語に入れ替えてあげ、
それを欲しい順番に連結して完成です。
<li class="group"></li>
これで出来た日付を、
上のタグに入れそのまま使うと、全投稿に表示されるので、
「ループ初回or前投稿と日付が違う」場合に表示するようにしました。
なお、あくまでも更新日なので、
下の記事が上の記事よりも新しい日付が出ますが、
そもそもFeedに作成日時が無いようなので、対応のしようがありません。
少し気持ち悪いですが、仕方ないです。
投稿にも、投稿された順番があるので、並べ替えずにこのままで良いです。
以下が今回のソースです。
<body>以下のソースが前回の投稿にあるので、それと照らし合わせて使用します。
▼続きを読む/たたむ
var handleBlogPostFeed = function(postsFeedRoot) {
var posts = postsFeedRoot.feed.getEntries();
// タグ生成生成
var objul = document.getElementsByTagName("ul").item(0);
objul.id = "home";
objul.title = postsFeedRoot.feed.getTitle().getText();
// タグ内投稿一覧生成
var html = '';
var prePostDate = '';
for (var i = 0, post; post = posts[i]; i++) {
var postTitle = post.getTitle().getText();
var postURL = post.getHtmlLink().getHref();
var blogUpdated = post.getUpdated().getValue().getDate();
// 日付生成
var aData = blogUpdated.toString().split(" ");
aData[0] = exChangeDay(aData[0]);
aData[1] = exChangeMonth(aData[1]);
var postDate = aData[3] + '/' + aData[1] + '/' + aData[2] + aData[0];
// 同じ日付が続く場合はまとめて表示する
if ( prePostDate == '' || prePostDate != postDate ){
html += '<li class="group">' + postDate + '</li>';
}
html += '<li><a href="' + postURL + '" target="_self">'
+ postTitle + '</a></li>';
// 次のループのために保存
prePostDate = postDate;
}
objul.innerHTML = html;
};
以下は曜日/月変換用。
// 曜日変換
function exChangeDay(day){
switch(day){
case "Sun":
day = "(日)";
break;
case "Mon":
day = "(月)";
break;
case "Tue":
day = "(火)";
break;
case "Wed":
day = "(水)";
break;
case "Thu":
day = "(木)";
break;
case "Fri":
day = "(金)";
break;
default:
day = "(土)";
}
return day;
}
// 月変換
function exChangeMonth(month){
switch(month){
case "Jan":
month = "01";
break;
case "Feb":
month = "02";
break;
case "Mar":
month = "03";
break;
case "Apr":
month = "04";
break;
case "May":
month = "05";
break;
case "Jun":
month = "06";
break;
case "Jul":
month = "07";
break;
case "Aug":
month = "08";
break;
case "Sep":
month = "09";
break;
case "Oct":
month = "10";
break;
case "Nov":
month = "11";
break;
default:
month = "12";
}
return month;
}
0 件のコメント:
コメントを投稿