自分のホームページに過去記事に飛ぶ「アーカイブス」を年別に表示している。
今までは、ただ年別表示しているだけで、例えば2020年をクリックすると、2019年の最も新しい記事を表示するだけで、「アーカイブス」の表示には、何も変化は起きなかった。
今回は、2019年をクリックした場合、2019年の最も新しい記事を表示すると共に、2019年の月別の記事数を表示するように改修した。
こうすることで、2019年内の記事の移動がしやすくなたと思う。
これは、ブラウザ内で、カレンダーのjavascriptで実行している。
scriptは下記の通り。
見る人が見れば稚拙なモノだと思いますが、80歳のボケ老人の頭で考えたことですから、ご容赦を!!
カレンダーのアーカイブスの部分(calen.js)
function archive(){
var i, j, m, n, myYear1, myYear2, myDate1, myDate2;
var c = [0,0,0,0,0,0,0,0,0,0,0,0]; // カウンター用
var d = [0,0,0,0,0,0,0,0,0,0,0,0]; // 最新記事日付用
m = 0;
n = -1; // 最初の行は2回カウントするので1個マイナス
with(document){ // 年別アーカイブ描画
myYear1 = list[0].substr(0,4); // list[0]の年
write('<ul>');
write('<li><a href=../' + list[0] + '/index.html>' + myYear1 + '年');
for (i=0; i<=listlen; i++) {
myDate1 = myYear + '01' + '01';
myDate2 = myYear + '12' + '31';
if (list[i] >= myDate1 && list[i] <= myDate2) { // listデータが表示年1月1日~表示年12月31日の範囲だったら
m = list[i].substr(4,2); // カレント年の月(カレント月)
c[m-1] += 1; // カウンター(c)の月ナンバーに1プラス
if (d[m-1] == 0) d[m-1] = list[i]; // 月の最新記事の日付取得し、配列dに格納
} else {
for (j=11; j>=0; j--){
if (c[j] > 0){ // カウンターが1以上の時だけ月を表示する
write('<li><a href=../' + d[j] + '/index.html> ' + (j+1) + '月 (' + c[j] + ')</a></li>'); // 月を書く
c[j] = 0; // カウンターをリセット
}
}
}
myYear2 = list[i].substr(0,4); // i行の年
n++; // 記事数をカウント
if (myYear1 != myYear2) { // myYear1=カレント年、カレント年とi行の年が違ったら(年が変わったら)
if (myYear1 != myYear){ // 記事数(n)を描く(カレント年が表示中の年だったらnを描かない)
write(' (' + n + ')</a></li>');
}
// 次の年表示 if文は最後の行の次の年を表示しないため
if (myYear1 != "") write('<li><a href=../' + list[i] + '/index.html>' + myYear1 + '年'); // 次の年表示
myYear1 = myYear2; // カレント年を次の年に順繰り
n = 0; // nをリセット
}
}
write('</ul>');
}
}
弟のホームページ も同じような改修をしたが、弟のホームページは2000年以降の記事しかないために、データの年を2桁で扱っている。
そのためにちょっと手こずったが、回転が鈍くなった頭を丸一日フル回転して漸くできた。