※色々な部分を変更するので、テンプレートは必ずメモ帳などにバックアップしておいてください。
新 Blogger で JavaScriptCalendar を利用する 今回参考にしたのがこちら。
素晴らしいアイデアが満載のカレンダーです。(′З`)さんのアイデアに便乗して、クリボウもウィジェットを作成しました。こちらは JavaScriptCalendar ベース(オリジナルは Bloglendar ベース)のカレンダーです。
1.Blogger 管理画面「設定 > フォーマット」より、「Date ヘッダーフォーマット」を「2006-02-10」形式にして「設定を保存」ボタンを押します。
2.下のボタンのどちらかを押してください。上が日本語表記のカレンダー、下が英語表記のカレンダーになっています。
3.追加するブログやタイトルを確認した後、「ウィジットを追加」ボタンを押してください。これで導入は終了です。
このカレンダーには、いくつかオプションを用意しています。こちらのページでご確認下さい。
旧 Blogger で Bloglendar を利用する 旧 Blogger 用カレンダーのひとつめは、Bloglendar を利用する方法です。Blogger に導入するのに参考にするのはこちらのページ。
では導入の方法を見ていきます。
1.Blogger 管理画面「設定 > フォーマット」より、「Date ヘッダー フォーマット」を「Friday, February 10, 2006」形式にします。
2.このファイルをダウンロード、解凍し、できた3つのファイルを任意のサーバーにアップロードします。サーバーが用意できない場合も次に進んでください。
3.Blogger 管理画面「テンプレート」より、テンプレート
head
要素内に、次のコードを貼り付けます。
<script type="text/javascript" charset="<$BlogEncoding$>" src="http://tools.kuribo.info/bloglendar/bloglendar.js">
</script><script type="text/javascript" charset="<$BlogEncoding$>" src="http://tools.kuribo.info/bloglendar/bloglendar-main.js">
</script><link rel="stylesheet" type="text/css" href="http://tools.kuribo.info/bloglendar/bloglendar.css" />
赤字の部分には、ファイルをアップロードしたディレクトリを入力します。サーバーが用意できない場合は、そのままで結構です。</script><script type="text/javascript" charset="<$BlogEncoding$>" src="http://tools.kuribo.info/bloglendar/bloglendar-main.js">
</script><link rel="stylesheet" type="text/css" href="http://tools.kuribo.info/bloglendar/bloglendar.css" />
4.テンプレートタグ
<BlogDateHeader>
を見つけ出し、直下に blogDate
クラスの div 要素を挿入します。元々 <BlogDateHeader>
内に書いてあるコードはそのままにしておきます。
<BlogDateHeader>
<div class="blogDate" title="<$BlogDateHeaderDate$>"></div>
<h2 class="date-header"><$BlogDateHeaderDate$></h2>
</BlogDateHeader>
<div class="blogDate" title="<$BlogDateHeaderDate$>"></div>
<h2 class="date-header"><$BlogDateHeaderDate$></h2>
</BlogDateHeader>
5.テンプレート中、カレンダーを表示させたい位置に次のコードを書き入れて、ブログ全体を再構築します。
<div id="bloglendar"><!-- Bloglendar here --></div>
以上で Bloglendar の導入完了です。
旧 Blogger で JavaScriptCalendar を利用する 旧 Blogger 用カレンダーのふたつめは、JavaScriptCalendar(JSCalendar)を使用する方法。Blogger に導入するのに参考にするのは、こちらのページ。
このカレンダーを導入すると、カレンダーから全てのページにアクセスできるようになる代わりに、月別アーカイブページが利用できなくなります。最初に知っておいてください。
それでは導入の方法を見ていきます。手順がたいへん多かったので、少し内容をまとめて手順を減らしています。
1.Blogger 管理画面「設定 > フォーマット」から、「Date ヘッダー フォーマット」を「2006-02-10」形式にします。また、管理画面「設定 > アーカイブ中」から、「アーカイブの頻度」を「日別」にします。
2.このページ右下の「1.0(download)」というリンクをクリック、ミラーサーバーを選んで JSCalendar をダウンロードし、解凍、出来たファイルを全て任意のサーバーにアップロードします。サーバーが用意できない場合も次に進んでください。
3.Blogger 管理画面「テンプレート」より、テンプレート
head
要素内に、次のコードを貼り付けます。
<style type="text/css">@import url("http://tools.kuribo.info/jscalendar-1.0/skins/aqua/theme.css"); </style>
<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/calendar.js"></script>
<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/lang/calendar-en.js"> </script>
<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/calendar-setup.js"> </script>
<script type="text/javascript"><!--
function calendar()
{
var archive = document.getElementById( 'archive' );
if( archive )
{
archive.style.display = 'none';
var notes = {};
var links = archive.getElementsByTagName( 'a' );
if( !links.length ) return;
var i, j, node, date, y, m, d;
for( i=0; i<links.length; i++ )
{
node = links[i];
date = node.innerHTML.split('-'); // YYYY-MM-DD
y = parseInt( date[0], 10 ); if(!notes[y]) notes[y] = {};
m = parseInt( date[1], 10 ); if(!notes[y][m]) notes[y][m] = {};
d = parseInt( date[2], 10 ); notes[y][m][d] = node.href;
}
var dates = document.getElementsByTagName( 'h2' ), thisDate;
for( i=0; i<dates.length; i++ )
if( dates[i].className == 'date-header' )
{
var ymd = dates[i].innerHTML.split('-'); // YYYY-MM-DD
thisDate = new Date( parseInt( ymd[0], 10 ),
parseInt( ymd[1], 10 )-1,
parseInt( ymd[2], 10 ) );
break;
}
top.notes = notes;
Calendar.setup(
{
weekNumbers : false,
step : 1, // show every year in the year menus
date : thisDate, // selected by default
flat : 'calendar-container', // div element
range : [ parseInt(links[0].innerHTML), y ],
showOthers : true, // show whole first/last week of month
flatCallback : dateChanged, // what to do on date selection
dateStatusFunc: disableDateP // which dates to show/hide how
});
}
}
// Returns true for all dates lacking a note, false or a css style for those having one.
// Exception: today does not return true, even if it lacks a note. (improves navigation)
function disableDateP( date, y, m, d )
{
var now = new Date;
if( (y == now.getFullYear()) &&
(m == now.getMonth()) &&
(d == now.getDate()) )
return false;
return noteFromDate( date ) ? false : true;
}
function noteFromDate( date )
{
var note = top.notes[date.getFullYear()] || {};
note = note[date.getMonth()+1] || {};
return note[date.getDate()];
}
function dateChanged( calendar )
{
if( calendar.dateClicked )
{
var note = noteFromDate( calendar.date );
if( note )
window.location = note;
}
}//--></script>
<style type="text/css"><!--
#archive {display: none;}
#calendar-container {width:200px;}
--></style>
赤字の部分には、ファイルをアップロードしたディレクトリを入力します。サーバーが用意できない場合は、そのままでも結構です。<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/calendar.js"></script>
<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/lang/calendar-en.js">
<script type="text/javascript" src="http://tools.kuribo.info/jscalendar-1.0/calendar-setup.js">
<script type="text/javascript"><!--
function calendar()
{
var archive = document.getElementById( 'archive' );
if( archive )
{
archive.style.display = 'none';
var notes = {};
var links = archive.getElementsByTagName( 'a' );
if( !links.length ) return;
var i, j, node, date, y, m, d;
for( i=0; i<links.length; i++ )
{
node = links[i];
date = node.innerHTML.split('-'); // YYYY-MM-DD
y = parseInt( date[0], 10 ); if(!notes[y]) notes[y] = {};
m = parseInt( date[1], 10 ); if(!notes[y][m]) notes[y][m] = {};
d = parseInt( date[2], 10 ); notes[y][m][d] = node.href;
}
var dates = document.getElementsByTagName( 'h2' ), thisDate;
for( i=0; i<dates.length; i++ )
if( dates[i].className == 'date-header' )
{
var ymd = dates[i].innerHTML.split('-'); // YYYY-MM-DD
thisDate = new Date( parseInt( ymd[0], 10 ),
parseInt( ymd[1], 10 )-1,
parseInt( ymd[2], 10 ) );
break;
}
top.notes = notes;
Calendar.setup(
{
weekNumbers : false,
step : 1, // show every year in the year menus
date : thisDate, // selected by default
flat : 'calendar-container', // div element
range : [ parseInt(links[0].innerHTML), y ],
showOthers : true, // show whole first/last week of month
flatCallback : dateChanged, // what to do on date selection
dateStatusFunc: disableDateP // which dates to show/hide how
});
}
}
// Returns true for all dates lacking a note, false or a css style for those having one.
// Exception: today does not return true, even if it lacks a note. (improves navigation)
function disableDateP( date, y, m, d )
{
var now = new Date;
if( (y == now.getFullYear()) &&
(m == now.getMonth()) &&
(d == now.getDate()) )
return false;
return noteFromDate( date ) ? false : true;
}
function noteFromDate( date )
{
var note = top.notes[date.getFullYear()] || {};
note = note[date.getMonth()+1] || {};
return note[date.getDate()];
}
function dateChanged( calendar )
{
if( calendar.dateClicked )
{
var note = noteFromDate( calendar.date );
if( note )
window.location = note;
}
}//--></script>
<style type="text/css"><!--
#archive {display: none;}
#calendar-container {width:200px;}
--></style>
4.
body
要素の開始タグを次のコードに変えます。<body onload="calendar()">
5.現在アーカイブを表示している部分(
archive-list
クラスの div
要素もしくは ul
要素)を、次のコードに差し替え、設定を保存、ブログ全体を再構築します。<div id="archive">
<ul class="archive-list">
<BloggerArchives>
<li><a href="<$BlogArchiveUrl$>"><$BlogArchiveName$></a></li>
</BloggerArchives>
</ul>
</div>
<div id="calendar-container"></div>
これで、JSCalendar の導入が完了です。
<ul class="archive-list">
<BloggerArchives>
<li><a href="<$BlogArchiveUrl$>"><$BlogArchiveName$></a></li>
</BloggerArchives>
</ul>
</div>
<div id="calendar-container"></div>