网络建站知识发布于分享网站

当前位置:首页>>新闻中心>>CMS教程>>帝国cms教程

帝国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月。

通过这种方式,可以精确地统计每篇文章在不同时间维度上的点击情况,从而为数据分析提供支持。

相关文章

  • 帝国CMS留言板显示IP的方法

    帝国CMS留言板显示IP的方法

    在留言板和后台留言审核面板中显示留言者的IP地址,是增强网站安全性和管理效率的重要功能。通过记录和展示IP地址,管理员可以更方便地追踪留言来源,确保内容的真实性和合法性。本文将详细介绍如何实现这一功能,并优化搜索引擎排名(SEO)。 首先,我们需要了解如何在代码中正确插入IP地址的显示逻辑。以下是...
    2025-03-29
  • 帝国显示IP问题的解决方案

    帝国显示IP问题的解决方案

    在网站开发中,保护用户隐私是一个重要的考虑因素。当您在分类信息内容页添加了发布人的IP显示功能时,可能会面临如何隐藏IP地址的部分数字以保护用户隐私的问题。本文将介绍一种方法,让您能够像处理评论中的IP地址一样,将IP地址的最后一位数字替换为“*”。 为了实现这一功能,您可以使用PHP代码对IP地...
    2025-03-29
  • 帝国系统生成完整GOOGLE SITEMAP的方法

    帝国系统生成完整GOOGLE SITEMAP的方法

    创建符合SEO标准的Google Sitemap对于提高网站在搜索引擎中的可见性至关重要。以下是一篇经过改写的文章,详细介绍了如何利用栏目分别创建不同的Sitemap,并确保其符合Google的要求。 技术整理:24mp3技术支持:wm_chief, hicode 制作Google Sitema...
    2025-03-29
  • 帝国CMS教程:使用灵动标签制作友情连接

    帝国CMS教程:使用灵动标签制作友情连接

    在构建动态网站时,使用循环结构来展示数据是一种常见的做法。例如,在EmpireCMS中,我们可以利用[e:loop]标签来实现这一功能。下面是一篇关于如何使用[e:loop]标签生成友情链接列表的文章,旨在优化搜索引擎排名(SEO),同时确保代码的可读性和功能性。 在EmpireCMS中,[e:l...
    2025-03-29

公众号