年別アーカイブでの月ごとのエントリー表示
一部テンプレートを公開したので,ついでに年別アーカイブの方も公開してしまおうという,ある意味やっつけ仕事に近いようなそうでないようなエントリーです(ぉ
以前の年別アーカイブのテンプレートについては,2007年5月 6日(日) - 詳しく書いていなかったけど...に書いているんだけど,これってMT3.x以下のみ対応で,しかもMTArchiveYear等のプラグインが必須だったんですよね.んで,MTが4になってからは当然プラグインが非対応となってしまったので,既存のMTタグのみで何とかするしかないということになってます(^^;
そんな前置きはこの辺にして(苦笑),さっきまでも少し改良を施していたんですが,ようやくすっきりした形のものが出来たので公開します.
<$MTSetVar name="ms" value="0"$> <MTEntries sort_order="ascend"> <$MTSetVar name="month2" value="0"$> <MTUnless name="ms"> <MTSetVarBlock name="month"><$MTEntryDate format="%m"$></MTSetVarBlock> <div class="section entry"> <h2><a href="./<$MtEntryDate format="%m"$>/" title="<$MTEntryDate format="%B"$>月"><$MTEntryDate format="%b" language="en"$>.</a></h2> <$MTSetVar name="ms" value="1"$> <dl class="headline"> </MTUnless> <$MTInclude module="専用ヘッドライン"$> <MTEntryNext> <MTSetVarBlock name="month2"><$MTEntryDate format="%m"$></MTSetVarBlock> </MTEntryNext> <MTIf name="month" ne="$month2"> </dl> </div> <$MTSetVar name="ms" value="0"$> </MTIf> </MTEntries>
このテンプレートのキモは...特にありませんが(ぉぃ,うちの場合年別・月別アーカイブについては降順表示(旧→新)にしていることから,どうしても最新年の末尾の処理がうまく行かなかくって,以前は苦し紛れに<MTEntries>
の外でタグを閉じる処理を行っていたこともあったんです(^^;.いやこれは<MTEntryNext>
で次のエントリー表示月との比較をしていることから,<MTEntryNext>
が存在しない場合,次のエントリー表示月が一致したまま<MTEntries>
を抜けてしまうため,末尾のタグを閉じる処理が行われないことが原因でした.
そこで,解決策として「<MTEntries>
の先頭で次のエントリー表示月の変数(month2)を0で格納する」というのを施しました.これなら,<MTEntryNext>
が存在しない場合でも,次の表示月を示す変数(month2)がエントリーの表示月(month)と一致しなくなるので,閉じタグの処理がちゃんと行われるようになります.
そうそう,モジュールとして登録されている「専用ヘッドライン」ですけど,これはmt.Vicunaのテンプレートを改変するわけに行かなかったので専用のヘッドラインとして作ったものです(ここだけの話カテゴリーにも使っていたりするけど(^^;).一応ソースはこんな感じにしています.
<dt><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><span class="date"> - Posted date: <$MTEntryDate format="%B月%e日(%a) %X"$></span></dt> <dd><ul> <li class="textBody"><$MTEntryExcerpt$></li> <MTIfNonEmpty tag="MTEntryCategory"><li class="category">Category: <MTEntryCategories glue=" | "><a href="<$MTCategoryArchiveLink$>" title="<MTCategoryLabel> Index"><MTCategoryLabel></a></MTEntryCategories></li></MTIfNonEmpty> <MTEntryIfTagged><li class="tag">Tag: <MTEntryTags glue=", "><a href="<$MTBlogURL$>tag-<$MTTagName encode_url="1"$>" rel="nofollow"><$MTTagName$></a></MTEntryTags></li></MTEntryIfTagged> </ul></dd>
...タグのところが少し冗長になっていたりするけど,これはSEO対策をしているためなのでまぁしょうがないということでひとつ(ぉぃ
Comments:0