-
帝国CMS实现文章点击量月、周、日排行效果的方法
- 时间:2025-03-29 01:32:32 来源: 人气:0
在数据库模型管理中,新增三个字段:DayHits、WeekHits 和 MonthHits。这三个字段均为整数类型(int),并且位于主表中。此外,还需要增加一个名为 ConditionHits 的字段,该字段为文本类型,同样位于主表中。请注意字段名称的大小写。
以下是一个示例代码,用于实现根据日期更新点击量的功能:
$time = mktime(0, 0, 0, 8, 5, 2010); // 设置日期为2010年8月5号
$wzid = 35; // 文章ID为35
$Week = date("w", $time); // 获取今天是星期几
$Number = date("j", $time); // 获取今天是几号
$Month = date("m", $time); // 获取今天是几月
$Years = date("Y", $time); // 获取今天是哪一年
$d = cal_days_in_month(CAL_GREGORIAN, $Month, $Years); // 获取本月总天数
$Week_r = $Number - $Week; // 计算本周日是几号
if ($Week_r < 1) {
$Week_r = cal_days_in_month(CAL_GREGORIAN, $Month - 1, $Years) + $Week_r;
}
$Week_l = $Number + 7 - $Week - 1; // 计算本周六是几号
if ($Week_l > $d) {
$Week_l = $Week_l - $d;
}
$newsrs = $empire->fetch1("select ConditionHits from {$dbtbpre}ecms_news where `id`={$wzid}");
$DayHitstime_k = mktime(0, 0, 0, date("m", $time), $Number, date("Y", $time));
$DayHitstime_j = $DayHitstime_k + 86400;
if (empty($newsrs['ConditionHits'])) { // 判断月、周、日点击条件是否为空,如果为空,则设置初始值
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='" . $Number . "|" . $Week_r . "-" . $Week_l . "|" . $Month . "',`DayHits`=1,`WeekHits`=1,`MonthHits`=1 WHERE `id`={$wzid}");
} else {
$Daytj = explode("|", $newsrs['ConditionHits']);
print_r($Daytj);
if ($newsrs['ConditionHits'] != "" . $Number . "|" . $Week_r . "-" . $Week_l . "|" . $Month . ") {
if ((int)$Daytj[0] != $Number) {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='" . $Number . "|" . $Daytj[1] . "|" . $Daytj[2] . "',`DayHits`=0 WHERE `id`={$wzid}");
}
if ($Daytj[1] != "" . $Week_r . "-" . $Week_l . "") {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='" . $Daytj[0] . "|" . $Week_r . "-" . $Week_l . "|" . $Daytj[2] . "',`WeekHits`=0 WHERE `id`={$wzid}");
}
if ((int)$Daytj[2] != (int)$Month) {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='" . $Daytj[0] . "|" . $Daytj[1] . "|" . $Month . "',`MonthHits`=0 WHERE `id`={$wzid}");
}
} else {
if ((int)$Daytj[0] == $Number) {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `DayHits`=DayHits+1 WHERE `id`={$wzid}"); // 今日点击+1
}
if ($Daytj[1] == $Week_r . "-" . $Week_l) {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `WeekHits`=WeekHits+1 WHERE `id`={$wzid}"); // 本周点击+1
}
if ((int)$Daytj[2] == (int)$Month) {
$empire->query("UPDATE `{$dbtbpre}ecms_news` SET `MonthHits`=MonthHits+1 WHERE `id`={$wzid}"); // 本月点击+1
}
}
}
上述代码的功能是根据当前日期更新文章的点击量统计信息。具体来说:
- DayHits:记录每日点击量。
- WeekHits:记录每周点击量。
- MonthHits:记录每月点击量。
- ConditionHits:用于存储与日期相关的条件信息,格式为“日|周范围|月”。例如,“5|1-7|8”表示5号,本周从1号到7号,以及8月。
通过这种方式,可以精确地统计每篇文章在不同时间维度上的点击情况,从而为数据分析提供支持。
相关文章
-
在留言板和后台留言审核面板中显示留言者的IP地址,是增强网站安全性和管理效率的重要功能。通过记录和展示IP地址,管理员可以更方便地追踪留言来源,确保内容的真实性和合法性。本文将详细介绍如何实现这一功能,并优化搜索引擎排名(SEO)。 首先,我们需要了解如何在代码中正确插入IP地址的显示逻辑。以下是...2025-03-29
-
在网站开发中,保护用户隐私是一个重要的考虑因素。当您在分类信息内容页添加了发布人的IP显示功能时,可能会面临如何隐藏IP地址的部分数字以保护用户隐私的问题。本文将介绍一种方法,让您能够像处理评论中的IP地址一样,将IP地址的最后一位数字替换为“*”。 为了实现这一功能,您可以使用PHP代码对IP地...2025-03-29
-
创建符合SEO标准的Google Sitemap对于提高网站在搜索引擎中的可见性至关重要。以下是一篇经过改写的文章,详细介绍了如何利用栏目分别创建不同的Sitemap,并确保其符合Google的要求。 技术整理:24mp3技术支持:wm_chief, hicode 制作Google Sitema...2025-03-29
-
在构建动态网站时,使用循环结构来展示数据是一种常见的做法。例如,在EmpireCMS中,我们可以利用[e:loop]标签来实现这一功能。下面是一篇关于如何使用[e:loop]标签生成友情链接列表的文章,旨在优化搜索引擎排名(SEO),同时确保代码的可读性和功能性。 在EmpireCMS中,[e:l...2025-03-29