有时需要调用指定时间段内发布的文章,比如展示“最近7天热门文章”或“本月更新内容”。通过灵动标签结合时间条件,可以轻松实现这一功能。

一、理解文章发布时间字段

帝国CMS中文章的发布时间通常存储在 newstime 字段中,该字段值为Unix时间戳格式。因此,要按时间范围筛选文章,需将指定时间段转换为对应的时间戳进行比对。

二、基本调用语法(灵动标签)

使用[e:loop]灵动标签,配合SQL语句中的时间条件,可实现时间范围筛选。示例如下:

[e:loop={"select * from [!db.pre!]ecms_news where newstime BETWEEN ".(time()-3600*24*7)." and ".time()." order by newstime desc limit 10",10,24,0}]

=sub($bqr['title'],0,30,false)?>

[/e:loop]

说明:以上代码调用的是最近7天内发布的新闻文章(ecms_news为数据表),时间范围通过当前时间减去7天秒数计算得出。

三、常用时间范围写法参考

今天发布: BETWEEN ".strtotime('today')." and ".time()

昨天发布: BETWEEN ".strtotime('yesterday')." and ".strtotime('today')

最近3天: BETWEEN ".(time()-3600*24*3)." and ".time()

本月发布: BETWEEN ".strtotime(date('Y-m-1'))." and ".time()

指定日期段(如2024年1月1日至2024年1月31日):BETWEEN ".strtotime('2024-01-01')." and ".strtotime('2024-01-31 23:59:59')