図の通りの変更。地味なんだけど、前後のページへリンクさせ移動できるよう javascriptでやってる。もちろん、アーカイブの存在しない月は表示しない(例えば、SOLA Blogの 9月のアーカイブでは”前の月へ”は表示されない)。で、”アーカイブリスト”の隣のカッコには現在表示中の年月を表示した。こちらも javascript。なので、javascriptオフ場合はどちらも表示されない。ナビゲーションに問題がでるわけでもないし、サイドバーのアーカイブ一覧からも移動できるので良しとする。
前の月、次の月の表示とリンク
こちらは先例を見つけることができた。「弱小エンジニアの小言」さんです。こちらはリンク生成のサンプルだが、僕は「前の月」「次の月」の文字も生成するようにした。 なにぶん、素人なので間違いや危ないところがあるかもしれないけど。現在開いているURLから、前の月、次の月のURLを見つけている。ライブドアでは月別アーカイブのURLが"2005-04.html"のようなフォーマットがあるので、URLの文字列か前後の月のURLを生成するのは容易。で、ついでに文字列を日付に直し、今月と、ブログを付け始めた月と比べて、「前の月」「次の月」を表示するかどうか判断させてる。
function WriteGotoMonth()
{
//var thisurl = "http://blog.eee-craft.com/archives/2005-03.html"
var thisurl = location.href;
pt = thisurl.search("#");
if(pt > 0 ){thisurl=thisurl.substring(0,pt)}
var cnt = thisurl.length
var y = thisurl.substr( cnt-12, 4 );
var m = thisurl.substr( cnt-7, 2 );
var archurl = thisurl.substring( 0, cnt-12 );
var frg=0
today = new Date();
thisdt = new Date( y, m-1, 1 );
lastdt = new Date( 2004, 9-1, 1 );
thisdt.setMonth( thisdt.getMonth() - 1 )
if ( thisdt >= lastdt ) {
var frg=1
document.write('<a href="',GetNxtURL(archurl,thisdt),'" class="aposted"><< 前の月</a>');
}
thisdt.setMonth( thisdt.getMonth() + 2 )
if ( today > thisdt ) {
if ( frg == 1 ) {document.write("│");}
document.write('<a href="',GetNxtURL(archurl,thisdt),'" class="aposted">次の月 >></a>');
}
}
function GetNxtURL(archurl,thisdt)
{
var yy = thisdt.getFullYear();
var mm = thisdt.getMonth() + 1;
if (mm < 10) { mm = "0" + mm; }
return archurl + yy + "-" + mm + ".html";
}
年月の表示
こっちも似たような感じ。だけどもっと単純。文字列の操作だけ。document.write()でHTMLに出力させるらしい。ジャバスクリプトって便利なんだなぁと思ったけど、これくらいライブドアの特殊タグでできて欲しい。
function WriteMonth(xurl)
{
pt = xurl.search("#");
if(pt > 0 ){xurl=xurl.substring(0,pt)}
var cnt = xurl.length
var y = xurl.substr( cnt-12, 4 );
var m = xurl.substr( cnt-7, 2 );
document.write( y,"年",m ,"月" );
}