首先通过newstime字段获取文章发布时间戳,再利用灵动标签结合SQL语句筛选指定时间段内的文章,如最近7天,实现方式为:[e:loop={"select from [!db.pre!]ecms_news where newstime BETWEEN ".(time()-360024*7)." and ".time()." order by newstime desc limit 10",10,24,0}],可动态展示“最近7天热门文章”等内容。

在使用帝国CMS建站时,有时需要调用指定时间段内发布的文章,比如展示“最近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}]说明:以上代码调用的是最近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')
四、注意事项与优化建议
调用时注意以下几点,避免出错:
- 确保表名正确,如使用其他模型(如下载、信息),需替换对应的数据表名
- 若启用了缓存,修改时间条件后记得清除缓存查看效果
- 为提升性能,建议加上适当的limit限制条数
- 可在后台“模板” → “标签” → “标签生成器”中测试SQL语句
基本上就这些,掌握时间戳的处理方式后,灵活调整条件即可满足各种时间段调用需求。










