缩短按月归档的办法

MT, MT Styles, MT archives当写博客时间长了,按月归档也就越来越长了,如果归档太长很容易影响博客界面的美观,看上去怪怪的,感觉有点不协调。

当然可以采用下拉菜单的方式,曙光博客就是采用这个方式。

昨天我突然看到一个博客有介绍另外的一种方式来显示按月归档,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="&nbsp;"$></td>
        </mt:if>
    </mt:for>
    </tr>
</mt:for>
</table>
    </div>
</div>

4、把History拉到你想放的Widget Set中。

5、重建博客。

我在自己的博客上设置了这种按月归档的显示办法,具体的样子可以看我的中文博客

注意:如果写了好多年的话,要注意Widget的宽度,像Dash的博客,已经快放不下了......

原文在这里,上面还有介绍代码的含义,有兴趣的可以仔细研究一下。MT的功能已经很强了,只是模板少了点,想找一款CMS-style或者Magazine-style的模板,一直没找到。