当写博客时间长了,按月归档也就越来越长了,如果归档太长很容易影响博客界面的美观,看上去怪怪的,感觉有点不协调。
当然可以采用下拉菜单的方式,曙光博客就是采用这个方式。
昨天我突然看到一个博客有介绍另外的一种方式来显示按月归档,Anil Dash的博客以前就看到过,他的按月归档(见右侧)很有型。Beau Smith说他问Dash要代码,Dash的回答是:我是手工添加的。Beau Smith就自己写了一个,拿来和大家分享一下。
1、启用按年归档。
在Archive Templates里面新建一个Entry Listing,命名随便,这里命名为Yearly,然后内容留空,保存。然后再进入Yearly,点击Template Options,选择Yearly,默认的安装yyyy/index.html。
2、新建一个Widget,命名随便,这里命名为History。
3、把下面代码加入到Widget中。
<div class="widget-recent-entries widget-archives widget">
<h3 class="widget-header">History</h3>
<div class="widget-content">
<table id="archives-table">
<mt:ArchiveList type="Yearly" sort_order="ascend">
<mt:ArchiveListHeader><tr><$mt:ArchiveDate format="%Y" setvar="start_year"$></mt:ArchiveListHeader>
<th><$mt:ArchiveDate format="'%y"$></th>
<$mt:ArchiveDate format="%Y" setvar="year"$>
<$mt:setvar name="is_posts_year_{$year}" value="1"$>
<mt:ArchiveList type="Monthly">
<$mt:ArchiveDate format="%m_%Y" setvar="month_year"$>
<mt:SetVarBlock name="links_{$month_year}"><a href="<$MTArchiveLink$>"><mt:ArchiveDate format="%b"$></a></mt:SetVarBlock>
</mt:ArchiveList>
<mt:ArchiveListFooter></tr><$mt:ArchiveDate format="%Y" setvar="end_year"$></mt:ArchiveListFooter>
</mt:ArchiveList>
<mt:for var="month" from="1" to="12">
<tr>
<mt:for var="year" from="$start_year" to="$end_year">
<mt:if name="is_posts_year_{$year}">
<mt:setvarblock name="month_year"><mt:var name="month" sprintf="%02d">_<mt:var name="year"></mt:setvarblock>
<td><$mt:var name="links_{$month_year}" default=" "$></td>
</mt:if>
</mt:for>
</tr>
</mt:for>
</table>
</div>
</div>
4、把History拉到你想放的Widget Set中。
5、重建博客。
我在自己的博客上设置了这种按月归档的显示办法,具体的样子可以看我的中文博客。
注意:如果写了好多年的话,要注意Widget的宽度,像Dash的博客,已经快放不下了......
原文在这里,上面还有介绍代码的含义,有兴趣的可以仔细研究一下。MT的功能已经很强了,只是模板少了点,想找一款CMS-style或者Magazine-style的模板,一直没找到。