if(!function_exists(‘diy_typeids’)) {/*** 递归获取给定栏目及其所有子栏目的ID列表**/function diy_typeids($typeid){$childIds = [$typeid];$data = db(‘arctype’)->field(‘id’)->where([‘is_del’ => 0,‘status’ => 1,‘parent_id’ => $typeid])->select();if ($data instanceof \think\Collection) {$data = $data->toArray();}foreach ($data as $item) {$childIds = array_merge($childIds, diy_typeids($item[‘id’]));}return $childIds;}}if(!function_exists(‘diy_archive_count’)){/*** 获取发布数量*/function diy_archive_count($range = ‘1’,$typeid = ”){$now = time();$where = [‘arcrank’ => 0,‘is_del’ => 0,];if($typeid){$allChildIds = diy_typeids($typeid);$where[‘typeid’] = [‘in’, $allChildIds];}//时间范围查询if(is_numeric($range)){$startOfDay = strtotime(date(‘Y-m-d’, $now) . ‘ 00:00:00’);$endOfDay = strtotime(date(‘Y-m-d’, $now) . ‘ 23:59:59’);$where[‘add_time’] = [‘between’, [$startOfDay – ($range * 86400), $endOfDay]];}else{switch ($range) {case ‘lastweek’: //上周$startTime = strtotime(‘last monday’, $now) – 7 * 86400;$endTime = strtotime(‘last sunday’, $now) + 86399;break;case ‘thisweek’: //本周$startTime = strtotime(‘last sunday’, $now) + 86400;$endTime = strtotime(‘next sunday’, $now) – 1;break;case ‘thismonth’: //本月$startTime = mktime(0, 0, 0, date(‘n’, $now), 1, date(‘Y’, $now));$endTime = mktime(23, 59, 59, date(‘n’, $now), date(‘t’, $now), date(‘Y’, $now));break;case ‘lastmonth’: //上个月$startTime = mktime(0, 0, 0, date(‘n’, $now)-1, 1, date(‘Y’, $now));$endTime = mktime(23, 59, 59, date(‘n’, $now)-1, date(‘t’, mktime(0, 0, 0, date(‘n’, $now)-1, 1, date(‘Y’, $now))), date(‘Y’, $now));break;case ‘thisyear’: //今年$startTime = mktime(0, 0, 0, 1, 1, date(‘Y’, $now));$endTime = mktime(23, 59, 59, 12, 31, date(‘Y’, $now));break;case ‘lastyear’: //去年$startTime = mktime(0, 0, 0, 1, 1, date(‘Y’, $now) – 1);$endTime = mktime(23, 59, 59, 12, 31, date(‘Y’, $now) – 1);break;default:return false;}$where[‘add_time’] = [‘between’, [$startTime, $endTime]];}return db(‘archives’)->where($where)->count();}}
以上代码复制到根目录/extend/function.php 最下方
然后再模版里调用
{:diy_archive_count()} 默认当天数量
{:diy_archive_count(7)} 近7天的数量
{:diy_archive_count(30)} 近30天的数量
{:diy_archive_count(365)} 近365天的数量
其他的数字以此类推
其他查询方式
{:diy_archive_count(lastweek)} = 查询上周数量
{:diy_archive_count(thisweek)} = 查询本周数量
{:diy_archive_count(thismonth)} = 查询本月数量
{:diy_archive_count(lastmonth)} = 查询上月数量
{:diy_archive_count(thisyear)} = 查询今年数量
{:diy_archive_count(lastyear)} = 查询去年数量
查询某个栏目以及下属的所有子栏目
{:diy_archive_count(时间,栏目ID)}
比如
{:diy_archive_count(30,1)} 相当于查询最近30天栏目1的数量,第一个参数适用以上的