Movable Type 備忘録

 年別アーカイブ一覧

こんばんわ^^

今日( 昨日 )は「劇場版ポケットモンスター ダイヤモンド&パール ギラティナと氷空(そら)の花束シェイミ」を観てきました。

ちょっとしたハプニングがありまして、姪っ子たちに怒られちゃいました (; ̄∇ ̄A

姪っ子はしきりにサブタイルを言ってたらしく、乗り気がしないわたしはその時だけ耳が遠くなったようで「ホートン ふしぎな世界のダレダーレ」と変換されて( 長いタイトルだなぁ・・・しか覚えてない )ずっと上映してる映画館を探してたんです。
でもほとんどの映画館で上映を終了してたので、ラッキー!! と内心思いつつも「もうホートンやってないみたいだよ」っていったら、「それじゃないよぉ。ギラディナ・・・ ・・・だよ。」って一斉攻撃をくらいました Σ( ̄Д ̄;)

もう若い子の感性にはついてけないので、「ポケモン観たかったなら、ポ・ケ・モ・ンと言ってくれぇ~」と思った今日( 昨日 )の昼下がりでした (つω-`。) とほほ

さて、訪問者さんからの質問で、月別一覧表示で投稿してない月も表示させたい( リンクなし )とのことだったのでご説明します。

年別アーカイブ一覧

通常、月別一覧を表示するには MTArchiveList ブロックタグを使用します。 これはご存知のように投稿した月の一覧しか表示されません。
じゃぁ、どうするか・・・デフォルトで 1 月 ~ 12 月を年別に表示したらいいんじゃね!? ということでやってみたのが以下のようなかんじです。

2009年:
01月 02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2008年:
01月 02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2007年:
01月 02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2006年:
01月 02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2005年:
01月 02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月

上記サンプルは以下のようなコードになります。

年別アーカイブ一覧

  1. <MTArchiveList archive_type="Yearly">
  2.     <MTArchiveListHeader><dl id="monthly_list"></MTArchiveListHeader>
  3.  
  4.     <dt class="header"><a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y/"$>"><$MTArchiveDate format="%Y年"$></a>:</dt>
  5.  
  6.     <mt:SetVarBlock name="month">
  7.         <MTArchiveList archive_type="Monthly">
  8.             <MTEntries lastn="1"><$MTEntryDate format="_%B_"$></MTEntries>
  9.         </MTArchiveList>
  10.     </mt:SetVarBlock>
  11.  
  12.     <dd class="body"><mt:For var="m" from="1" to="12">
  13.         <mt:SetVarBlock name="mon">_<$mt:GetVar name="m"$>_</mt:SetVarBlock>
  14.  
  15.         <mt:If name="month" like="$mon">
  16.             <a href="<$MTBlogArchiveURL$><$MTArchiveDate format="%Y"$>/<mt:GetVar name="m" zero_pad="2">/"><mt:GetVar name="m" sprintf="%02d月"></a>
  17.         <mt:Else>
  18.             <span><mt:GetVar name="m" sprintf="%02d月"></span>
  19.         </mt:If>
  20.     </mt:For></dd>
  21.  
  22.     <MTArchiveListFooter></dl></MTArchiveListFooter>
  23. </MTArchiveList>

まず、このカスタマイズは年別アーカイブをマッピングすることが大前提となります。

青字の部分で年別にループ( 2005 ~ 2008 )させてます。
赤字の部分では、各年で投稿された月のエントリ一件分の投稿月を取得してます。
そして、緑字の部分で 1 月~12 月のループを行ってます。これにより投稿してない月でも表示させることが可能となります。
最後に、黄色字の部分で投稿した月があるかどうかをチェックして、投稿月ならばアーカイブページのリンクを表示し、投稿してなければテキスト表示するようにしてます。

上記サンプルでは、以下のようなマークアップになります。

マークアップ

  1. <dl id="monthly_list">
  2.     <dt class="header"><a href="http://●●●/2008/">2008年</a>:</dt>
  3.     <dd class="body">
  4.         <a href="http://●●●/2008/01/">01月</a>
  5.         <a href="http://●●●/2008/02/">02月</a>
  6.         <a href="http://●●●/2008/03/">03月</a>
  7.         <a href="http://●●●/2008/04/">04月</a>
  8.         <a href="http://●●●/2008/05/">05月</a>
  9.         <a href="http://●●●/2008/06/">06月</a>
  10.         <a href="http://●●●/2008/07/">07月</a>
  11.         <a href="http://●●●/2008/08/">08月</a>
  12.         <span>09月</span>
  13.         <span>10月</span>
  14.         <span>11月</span>
  15.         <span>12月</span>
  16.     </dd>
  17. </dl>

そして上記サンプルのスタイルシートを以下に記します。

スタイルシート

  1. #monthly_list,
  2. #monthly_list dt,
  3. #monthly_list dd {
  4.     margin: 0;
  5.     padding: 0;
  6. }
  7. #monthly_list dt {
  8.     float: left;
  9. }
  10. #monthly_list dd:after {
  11.     height: .1px;
  12.     display: block;
  13.     visibility: hidden;
  14.     content: ".";
  15.     font-size: .1em;
  16.     line-height: 0;
  17.     clear: both;
  18. }

以上です。

 Trackback Pings(1)

from HashiMのたわごと(?)

何の話かというと,7月頃に書いたこれのこと. 2008年7月12日(土) - ...

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード