2004年09月 12日
MT アーカイブ連動カレンダー テンプレート
月間移動可能なカレンダーはすでに提案されているのですが、カレンダーでそのまま Archive をブラウズできる方が僕的にはうれしいなぁ~と。で、作ってみました。
このサイト左上にあるカレンダーがそのサンプルなんですが、今表示している Entry 郡の月別アーカイブへリンクされています。前月・次月アーカイブへもリンクされています。これを各日別・月別アーカイブに載せれば、閲覧している人がカレンダーを使って各アーカイブを自由にブラウズできるようになるってわけです。
Data Based Archive テンプレートに下記を追加することで実現できます。スタイルシート等は各サイトによって違うと思いますので適宜改変くださいませ。ちなみにこの色で表示されたところが主に必要な部分です。Data Based Archive でカレンダーを付けるための工夫も入っています。
<!-- カレンダー -->
<div class="sidetitle">
Calendar
</div>
<div align="center" class="calendar">
<table width="160" border="0" cellspacing="2" cellpadding="0"
summary="Monthly calendar with links to each day's posts">
<caption class="calendarhead" >
<MTArchivePrevious archive_type="Monthly">
<a href="<$MTArchiveLink$>">«</a>
</MTArchivePrevious>
<a href="<$MTArchiveLink archive_type="Monthly"$>">
<$MTEntryDate format="%B %Y"$></a>
<MTArchiveNext archive_type="Monthly">
<a href="<$MTArchiveLink$>">»</a>
</MTArchiveNext>
</caption>
<tr>
<th abbr="Sunday" align="center">
<span class="calendar" >
<font color="#990000">Su</font></span></th>
<th abbr="Monday" align="center">
<span class="calendar" >Mo</span></th>
<th abbr="Tuesday" align="center">
<span class="calendar" >Tu</span></th>
<th abbr="Wednesday" align="center">
<span class="calendar" >We</span></th>
<th abbr="Thursday" align="center">
<span class="calendar" >Th</span></th>
<th abbr="Friday" align="center">
<span class="calendar" >Fr</span></th>
<th abbr="Saturday" align="center">
<span class="calendar" >
<font color="#0033CC">Sa</font></span></th>
</tr>
<MTCalendar month="this">
<MTCalendarWeekHeader>
<tr>
</MTCalendarWeekHeader>
<td align="center"><span class="calendar" >
<MTCalendarIfEntries>
<MTEntries lastn="1">
<a href="<$MTEntryLink archive_type="Daily"$>"
title="Last entry is[<$MTEntryTitle$>]">
<b><$MTCalendarDay$></b></a>
</MTEntries>
</MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
<MTCalendarIfBlank> </MTCalendarIfBlank></span>
</td>
<MTCalendarWeekFooter>
</tr>
</MTCalendarWeekFooter>
</MTCalendar>
</table>
</div>
Main Index のテンプレートはちょっと書き方を変えなければいけません。続きに示すようにしてください。
<!-- カレンダー -->
<div class="sidetitle">
Calendar
</div>
<div align="center" class="calendar">
<table width="160" border="0" cellspacing="2" cellpadding="0"
summary="Monthly calendar with links to each day's posts">
<MTArchiveList archive_type="Monthly" lastn="1">
<caption class="calendarhead" >
<MTArchivePrevious>
<a href="<$MTArchiveLink$>">«</a>
</MTArchivePrevious>
<a href="<$MTArchiveLink$>">
<$MTDate format="%B %Y"$></a>
</caption>
</MTArchiveList>
<tr>
<th abbr="Sunday" align="center">
<span class="calendar" >
<font color="#990000">Su</font></span></th>
<th abbr="Monday" align="center">
<span class="calendar" >Mo</span></th>
<th abbr="Tuesday" align="center">
<span class="calendar" >Tu</span></th>
<th abbr="Wednesday" align="center">
<span class="calendar" >We</span></th>
<th abbr="Thursday" align="center">
<span class="calendar" >Th</span></th>
<th abbr="Friday" align="center">
<span class="calendar" >Fr</span></th>
<th abbr="Saturday" align="center">
<span class="calendar" >
<font color="#0033CC">Sa</font></span></th>
</tr>
<MTCalendar>
<MTCalendarWeekHeader>
<tr>
</MTCalendarWeekHeader>
<td align="center"><span class="calendar" >
<MTCalendarIfEntries>
<MTEntries lastn="1">
<a href="<$MTEntryLink archive_type="Daily"$>"
title="Last entry is[<$MTEntryTitle$>]">
<b><$MTCalendarDay$></b></a>
</MTEntries>
</MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
<MTCalendarIfBlank> </MTCalendarIfBlank></span>
</td>
<MTCalendarWeekFooter>
</tr>
</MTCalendarWeekFooter>
</MTCalendar>
</table>
</div>
上級技として
ここまで作ると Individual Entry Archive テンプレート(個別の Entry)にもカレンダーを載せたくなるのですが、まっとうな方法では実装できません。各アーカイブへの URL が Data-Based Archive 以外では生成できないからです。上級技として実装の指針も書いてみます。
- カレンダーだけを自動生成する新しいアーカイブテンプレートを作成する。
- ウェブログの設定 → アーカイブの設定で、「月別」として登録。
- 生成 file 名を calender_<$MTArchiveDate format="%Y_%m"$>.html などとする。
- PHP の include か、MTInclude を使ってcalender_<$MTArchiveDate format="%Y_%m"$>.html を各 Individual Entry Archive から読み込むようにする。
個人的な見解ですが、iframe タグを使って読み込む方法は IE 以外のブラウザでは不具合を起こすため、あまりお勧めできません…が、そのあたりを開き直れるのであれば。なお、これらの検討は以下のエントリーに詳しく書いてありましたのでご参考まで。
nlog(n): カレンダーを MTInclude するには
Idea&&TechnologyさんのページにあったこれMT アーカイブ連動カレ...
新年のカレンダーではありません。右に表示されているこのブログのカレンダーを、初期設定を捨て新たに設置しました。これで月の>をクリックすることで月別のアーカイブへ...
来るべき1周年に向けてテンプレートの変更をちょこまかとやっております。ホントはデザインをガラリと変えてみたいのだけれど、まずはサイトナビゲーションの改善から。ア...
【Idea&&Technology】さんのアーカイブ連動カレンダー テンプレートを参考にカレンダーを使いやすくしました。...
友人のサイト WEBLOG "EVERGREEN": 月連動型 カレンダー に影響されて、カレンダーや月別表示を修正しました 右上のカレンダーの所に >> 次の...
昨日から、悪戦苦闘していたphotoblogが、これでようやく先へすすめます。^^
ありがとうございました。
こんにちは。お役に立てたようでしたら僕も嬉しいです。
ところで、上記ソースですが、厳密には、
« ⇒ «
» ⇒ »
ですね。そのままでも動きますが。修正しておきます。
#<pre> タグでも &xxx; はそのまま変換されてしまうのでした
#あまり反応なかったのでほっといてましたスマソ
はじめまして。
コチラの記事を参考にさせていただきました。
念願の月めくりカレンダーが設置できてすごく嬉しいです。
コメントまでいただけて・・・本当にありがとうございました。
ところで。。。
そちらにトラックバックを送る際、何度もタイムエラーになってしまいます。。。
そのため、追記・修正のたびにそちらにpingを送ってしまっているようです。
何度も送ってしまって申し訳ありませんでした。
こちらこそ、お役に立てたなら嬉しいです。
トラックバックの件、
いえいえ、そうかな、と思っていました。
この blog は自宅でサーバーで組んでいるので
(加えて Windows サーバーなので)
何かと不具合あるみたいです。
大抵の MT サイトは ping でエラーが帰ってきても
反映はされているみたいです。
ので、最初の一回だけ送って
後は トラックバックリストから削除しちゃうのが
賢い模様ですね。
僕も同じようなコトを他のサイトによくやってしまいますw
使いやすいのありがとうございます。
間違えてトラックバック2回送っちゃいました・・・。
すみません。
ご紹介、とてもありがとうございました!
なんぼかでもお役に立てたなら幸いです。
トラックバックは1つ削除しておきますね。
MT3.2からブログを始めたブログ初心者です。
デフォルトでカレンダーが出ないので四苦八苦していたところ 貴サイトにたどり着きました
早速セットしましたら見事にカレンダーが!
ありがとうございました。
ただ cssが反映されてないので テンプレートにstyles-site.cssにリンクを貼ってみたのですがダメでした。
初心者的質問で恐縮なのですが どうすればよいのかご教示頂けないでしょうか?
ご連絡が遅くなってしまいました。
上記ですが、ちょっと状況が分かりません…。スタイルシート自体の記述を間違っていることはありませんか?ないしは、スタイルシートのリンク先 URL を間違っているとか。出来た blog のソースを直に参照してみると、時々意外な問題を発見することがあります>MT











