Typecho按时间归档
有些时候,我们需要根据时间维度对文章进行归档,或者直接制作时间线(timeline)页,即用于展示博主的点滴。又有时,希望点击文章发布的时间即可直接连接到归档的页面,如发布时间2015年1月,点击“2015年1月”即可进入2015年1月发表的文章列表,这样可以在不占用任何额外的空间的前提下,方便读者按年,月,日阅览日志文章,增加流量。
Typecho提供了根据时间维度来获取文章归档的api,见Widget_Contents_Post_Date
$obj = $this->widget('Widget_Contents_Post_Date');
if($obj->have()){
while($obj->next()){
$obj->date();
... ...
}
}else{
echo '无文章';
}
Widget_Contents_Post_Date字段解析
- year:年份的字符串形式,譬如2015
- month:月份的字符串形式,譬如01
- day:字符串形式
- date:字符串形式,具体格式由format参数指定,譬如参数指定为Y-m,则date字段输出2015-01
- count:该时间归档下的文章数目
- permalink:该时间归档的地址
譬如var_dump($obj)可能输出一下内容:
array (size=6)
'year' => string '2015' (length=4)
'month' => string '01' (length=2)
'day' => string '25' (length=2)
'date' => string '2015-01' (length=7)
'count' => int 12
'permalink' => string 'http://www.typechodev.com/index.php/2015/01/' (length=46)
Widget_Contents_Post_Date可用参数
- format 设定输出格式,譬如参数指定为Y-m,则date字段输出2015-01。
- type 设定归档类型,默认是month
- limit 查询的条数,默认为0,则不限制,输出所有。
$this->widget('Widget_Contents_Post_Date','format=Y-m&type=month&limit=0')
,表示按月份为最小维度进行归档,展示的格式是Y-m,并显示所有归档。
Widget_Contents_Post_Date常见用法
常规用法
通过widget方法初始化组件,并使用next()进行迭代。
$this->widget('Widget_Contents_Post_Date')->to($recent);
while($recent->next()):
......
endwhile;
快捷用法
使用便捷方法parse:
$this->widget('Widget_Contents_Post_Date')->parse('<a href="{permalink}">{date}(count)</a>');