GPSwalking

2021.09.11(土)

HPのアーカイブスの改修

自分のホームページに過去記事に飛ぶ「アーカイブス」を年別に表示している。
今までは、ただ年別表示しているだけで、例えば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桁で扱っている。
そのためにちょっと手こずったが、回転が鈍くなった頭を丸一日フル回転して漸くできた。

2021.09.11

データ

天気

晴れ

アーカイブス