/* * 「entriesZ」 - 最近の記事一覧を javascript によるページ切替で * さかのぼれる MovableType テンプレート * http://www.towofu.net/mt/ * * 最近の記事一覧だけでなく、少し前の記事一覧が見たい。 * そんな要求から生まれた。 * * 転載・改造・配布などすべて自由です。 * エントリーがものすごく多くて、しかも延々とさかのぼりたければ、 * ajax 化するとか。 * 2005/05/24 */ var itemsPerPage = 10; //1 ページに表示するアイテム数。 var currentPage = 0; //現在表示中のページ。最新のページが 0。古いほど数字が大きくなる。 var items = [ //エントリーURL, エントリータイトル, コメント数, トラックバック数 ["<$MTEntryPermalink$>", "<$MTEntryTitle$>", <$MTEntryCommentCount$>, <$MTEntryTrackbackCount$>], /* 最後のアイテムの後ろのコロンがあると、 * IE では実際のアイテム数+1、Fx では実際のアイテム数になるので、 * 以下にダミーを置いて、強制的に実際のアイテム数+1とする。 */ ["", "", 0, 0] ]; var lastPage = Math.floor((items.length-1 + (itemsPerPage-1)) / itemsPerPage) - 1; /* ページを inc 進めてから再表示する */ function incPage(inc) { currentPage += inc; printCurrentPage(); } /* 現在のページを表示する */ function printCurrentPage() { /* 表示ブロックをクリアする */ var disp = document.getElementById("entriesz"); while (disp.hasChildNodes()) { disp.removeChild(disp.lastChild); } /* ページの切替ボタンを表示する */ var btns = document.createElement("div"); btns.id = "entriesz_btns"; var prevBtn, nextBtn; //「前へ」ボタンを作る if (currentPage < lastPage) { prevBtn = document.createElement("a"); prevBtn.href = "javascript:incPage(+1)"; } else { prevBtn = document.createElement("span"); } prevBtn.appendChild(document.createTextNode("<<前へ")); //「次へ」ボタンを作る if (currentPage > 0) { nextBtn = document.createElement("a"); nextBtn.href = "javascript:incPage(-1)"; } else { nextBtn = document.createElement("span"); } nextBtn.appendChild(document.createTextNode("次へ>>")); //書き出す btns.appendChild(prevBtn); btns.appendChild(document.createTextNode(" | ")); btns.appendChild(nextBtn); disp.appendChild(btns); /* エントリー一覧を表示する */ var start = itemsPerPage * currentPage; var end = Math.min(start + itemsPerPage, items.length-1); var list = document.createElement("ul"); for (i = start; i < end; i++) { var item = document.createElement("li"); //エントリーへのリンクを作る var link = document.createElement("a"); link.href = items[i][0]; //コメントとトラックバックの数 var str = ""; if (items[i][2] + items[i][3]) { str = " ("; if (items[i][2]) str += "C:" + items[i][2]; if (items[i][3]) { items[i][2] ? str += " " : str; str += "T:" + items[i][3]; } str += ")"; } //書き出す link.appendChild(document.createTextNode(items[i][1])); item.appendChild(link); if (str != undefined) item.appendChild(document.createTextNode(str)); list.appendChild(item); } disp.appendChild(list); } printCurrentPage();