印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 年間カレンダーを作る

年が開け,ウェブログのアーカイブが 2004 年分と 2005 年分の2つになった。2004 年分は表を全部手書きしていたのだが,毎年作らなくてはならないのが面倒。プラグインを導入して,次の年や前の年へのリンクが自動的に作成されるようにする。

■ ■ ■

作り方は,caramel*vanilla さんの [*] : 年間アーカイブの作成 に簡潔に説明されている通りで,スバリそのままできる。以下ではサイトに合わせた細かい調整をしていく。以下はこのサイトの場合。バージョンは Movable Type 2.661 である (3.x でも多分同じ)。

最初に決めなければならないのは,年間カレンダーを構築した後の保存先である。日別と月別のアーカイブに習って,年に「.html」をつけた名前にすることにした。

アーカイブの種類 保存先の例
日別アーカイブ /archives/2005_01_09.html
月別アーカイブ /archives/2005_01.html
年別アーカイブ /archives/2005.html

まずはプラグインを入手してインストールする。

次にテンプレートを作成する。

  1. 「テンプレートのリスト」→「新しいアーカイブ・テンプレートを作る」を開く
  2. 「テンプレートの名前」は何でもよいので,「Yearly Calendar Archive」とする
  3. 「テンプレートの中身」には,他のページと同じように「<?xml version="1.0"...」で始まるテンプレートのソースを書いていく。

    前後の年へのリンクは,月毎のアーカイブと同じ形式にする。

    <div id="menu">
    <MTArchiveYearPrevious>
    <a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y.html"$>">&laquo; <$MTArchiveDate format="%Y"$></a> |
    </MTArchiveYearPrevious>
    <a href="/">Main</a>
    <MTArchiveYearNext>
    | <a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y.html"$>"><$MTArchiveDate format="%Y"$> &raquo;</a>
    </MTArchiveYearNext>
    </div>

    12個の月別カレンダーが並ぶ,メインの表部分は次のようにした。

    <table style="border: none;" cellspacing="24" cellpadding="0" summary="Yearly calendar with links to each day's posts">
    <tbody style="text-align: center; vertical-align: top;">
      <MTArchiveYear columns="3">
        <MTArchiveYearRowHeader><tr></MTArchiveYearRowHeader>
        <td>
          <MTArchiveYearIfNotBlank>
    <!-- 自分のサイトのカレンダー(ここから) -->
            <span class="calendar">
            <table style="border: none; margin: auto;" cellspacing="0" cellpadding="2" width="160" summary="Monthly calendar with links to each day's posts">
              <caption class="calendarhead">
                <MTArchiveYearIfEntries>
                  <a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y_%m.html"$>"><$MTArchiveDate format="%B %Y"$></a>
                </MTArchiveYearIfEntries>
                <MTArchiveYearIfNoEntries>
                  <$MTArchiveDate format="%B %Y"$>
                </MTArchiveYearIfNoEntries>
              </caption>
              <tbody style="text-align: center;">
              <tr>
                <th abbr="Sunday" style="border-bottom: solid 1px gray;"><span class="calendarweek">S</span></th>
                <th abbr="Monday" style="border-bottom: solid 1px gray;"><span class="calendarweek">M</span></th>
                <th abbr="Tuesday" style="border-bottom: solid 1px gray;"><span class="calendarweek">T</span></th>
                <th abbr="Wednesday" style="border-bottom: solid 1px gray;"><span class="calendarweek">W</span></th>
                <th abbr="Thursday" style="border-bottom: solid 1px gray;"><span class="calendarweek">T</span></th>
                <th abbr="Friday" style="border-bottom: solid 1px gray;"><span class="calendarweek">F</span></th>
                <th abbr="Saturday" style="border-bottom: solid 1px gray;"><span class="calendarweek">S</span></th>
             </tr>
             <MTCalendar month="this">
               <MTCalendarWeekHeader><tr></MTCalendarWeekHeader>
               <td style="border-bottom: solid 1px #D7CEDF; <MTCalendarIfToday>border: solid 1px black;</MTCalendarIfToday> background-color: <$MTCalendarColor month="this" holidaycolor="#FFDAB9" saturdaycolor="#DDDDEE" oddcolcolor="#F1FFC8" evencolcolor="#FFFFFF"$>">
               <MTCalendarIfEntries><MTEntries lastn="1">
                 <a href="<$MTEntryPermalink archive_type="Daily"$>" title="<$MTEntryTitle$>" style="font: 12px Arial; font-weight: bold; text-decoration: none;"><$MTCalendarDay$></a>
               </MTEntries>
    <MTEntries days="1" sort_order="ascend"><MTDateHeader><a href="<$MTEntryPermalink archive_type="Daily"$>" title="</MTDateHeader><$MTEntryTitle$>... <MTDateFooter>" style="font: 12px Arial; font-weight: bold; text-decoration: none;"><$MTCalendarDay$></a></MTDateFooter></MTEntries></MTCalendarIfEntries>
               <MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries>
               <MTCalendarIfBlank>&nbsp;</MTCalendarIfBlank></td>
               <MTCalendarWeekFooter></tr></MTCalendarWeekFooter>
              </MTCalendar>
              </tbody>
            </table>
            </span>
    <!-- 自分のサイトのカレンダー (ここまで) -->
          </MTArchiveYearIfNotBlank>
        </td>
        <MTArchiveYearRowFooter></tr></MTArchiveYearRowFooter>
      </MTArchiveYear>
    </tbody>
    </table>

    table 要素が2重になっている。中の table のカレンダー部分は,通常のカレンダーと同じでよい。ただし,month="this" の指定を行うこと。スタイルに関しては,「正しいが推奨でない」属性を書き換えた(style 属性の最後の「;」はなくてもよい)。その他,月の名前から月別アーカイブにリンクするために,投稿のあるなしで MTArchiveYearIfEntries と MTArchiveYearIfNoEntries タグで場合わけを行っている。

    • table 要素の border="0" を style="border: none;" に変更
    • table 要素の中に tbody 要素を追加
    • tbody 要素の valign="top" を style="vertical-align: top;" に変更
    • td 要素の align="center" と valign="top" を style="text-align: center; vertical-align: top;" に変更

    <MTArchiveYear> タグで skip="yes" 属性をつけなければ,記事がない月の分も全て生成される。つけた場合,記事がない月は生成されなくなる。

アーカイブテンプレートができたら,アーカイブとの関連付けを行う。
  1. 「設定」→「アーカイブの設定」→「新しく追加...」
  2. 「アーカイブの種類」を「Monthly」,「テンプレート」を「Yearly Calendar Archive(上で作ったテンプレートの名前)」にして「追加」ボタンを押す(「追加」ボタンが見えない場合は[TAB]キーの移動で探せる)
  3. 「アーカイブファイルのテンプレート」欄に「<$MTArchiveDate format="%Y.html"$>」と入力
  4. ラジオボタンは「Date-Based Archive」のままにしておく
  5. 「保存」ボタンを押す

年間カレンダーへのリンクを作りたいテンプレート(メインインデックス,日付別アーカイブ)に以下を貼り付ける。年別の投稿数も表示させるようにしている。

<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader>
<a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y.html"$>" title="<$MTArchiveDate format="Calendar Archive %Y"$>">
<$MTArchiveDate format="Calendar %Y"$></a> (<$MTArchiveYearCount$>)<br />
</MTArchiveDateHeader>
</MTArchiveList>

出来上がったページは,nlog(n) - Yearly Archive 2005 で,リンクは メインインデックス などのカレンダーの下に置くようにした。

2005年1月28日追記:
nlog(n): カレンダーのリンクにタイトルを複数表示させたい をもとに,MTCalendarIfEntries コンテナタグ内を書き換えました。右上の 更新履歴 をクリックすると修正部分が確認できます。

2006年12月12日追記:
ArchiveYear Plugin の配布サイトは閉鎖されてしまいました。現在は ArchiveYear Plugin で配布されています。

Posted by n at 2005-01-09 17:15 | Edit | Comments (2) | Trackback(7)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
年間アーカイブの作成[補足]
以前年間カレンダーの作成についてはエントリーしていたのですが いつも楽しみに拝見しているnlog(n)さんから年間カレンダーのエントリーにTBいただき拝見させていただきましたらとてもわかりやすく説明されていました。 Trackbacked from: caramel*vanilla at January 10, 2005 19:40
年間カレンダー(暫定)
前回の記事の続きになりますが、年間のアーカイブを”年間カレンダー”として実装しま... Trackbacked from: Stupid excuse!! at January 13, 2005 16:28
年間カレンダー。
Stupid Excuse!! さまの 「年間カレンダー(暫定)」 を拝見して、... Trackbacked from: やむやむ at January 14, 2005 07:16
年間カレンダーの作成
カレンダーを年間表示できるようにした。 参考にしたWEB↓ caramel*va... Trackbacked from: FFF HP at February 06, 2005 17:16
年間カレンダーを作成
この連休は行楽日和である。昨日は神戸へ遊びに行ったが、今日は... Trackbacked from: うさぎ四姉妹日記 at November 05, 2006 01:32
正月飾り 松の内
ドラえもん10年1月8日放送感想(長い長いお正月) 今をトキめかない ... 以下、各場面の簡単な感想を。 ・野比家のお正月過去にもあったかもしれませんが、 松などの正月飾りが玄関ドアや門柱に配置されていて、 お正月ムードたっぷり。 かまぼこや黒豆等、おせちの食べ... Trackbacked from: 旬刊!ニュースダイジェスト at January 09, 2010 18:12
正月飾り 鏡餅
中野のぽんぽこの湯 ものづくり飾り ‎18 時間前‎ 中野市の間山温泉公園「ぽんぽこの湯」が、地元に伝わる小正月の伝統行事「ものづくり」の飾りを玄関ホールに掲げている。「ものづくり」は農作物や繭などの豊作を願い、米の粉をこねて作った... Trackbacked from: ハリウッド騒然!芸能界の裏話ニュース速報 at January 09, 2010 21:11
Comments

こんにちわ、はじめまして。
参考にさせていただきました。
ありがとうございました。

Posted by: 198 at January 13, 2005 16:33

またのご利用を。

Posted by: n at January 14, 2005 01:07
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?