织梦cms栏目访问统计

栏目访问统计概述

织梦CMS的栏目访问统计帮助管理员了解各栏目的流量情况,包括栏目页PV(页面浏览量)、UV(独立访客)、停留时间等。虽然织梦CMS自带的统计功能较为基础,但可以通过集成第三方统计工具和自定义代码来获取更详细的数据。

一、织梦CMS内置的点击统计

织梦通过 click 字段记录每篇文章的点击量:

<!-- 文章点击量更新机制 -->
<!-- 访问 /plus/count.php?aid=文章ID 时会自动更新click字段 -->

<!-- 模板中显示点击量 -->
<span>阅读:[field:click/]次</span>

<!-- 获取栏目的总点击量 -->
{dede:sql sql="SELECT SUM(click) as total_click 
FROM dede_archives WHERE typeid=3"}
总点击量:[field:total_click/]
{/dede:sql}

二、集成百度统计/Google Analytics

<!-- 在栏目模板中添加百度统计代码 -->
<script>
var _hmt=_hmt || [];
(function() {
  var hm=document.createElement("script");
  hm.src="https://hm.baidu.com/hm.js?你的统计ID";
  var s=document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();

// 按栏目发送统计事件
_hmt.push(['_setAutoPageview', false]);
_hmt.push(['_trackPageview', '/栏目目录/']); // 自定义页面路径
</script>

三、自定义栏目访问统计表

创建自定义统计表记录栏目访问情况:

-- 创建栏目访问统计表
CREATE TABLE dede_type_stats (
  id INT AUTO_INCREMENT PRIMARY KEY,
  typeid INT NOT NULL COMMENT '栏目ID',
  visit_date DATE NOT NULL COMMENT '访问日期',
  pv INT DEFAULT 0 COMMENT '页面浏览量',
  uv INT DEFAULT 0 COMMENT '独立访客',
  ip_count INT DEFAULT 0 COMMENT 'IP数',
  avg_time INT DEFAULT 0 COMMENT '平均停留秒数',
  UNIQUE KEY uk_type_date (typeid, visit_date)
);

四、栏目页访问记录代码

<?php
// 在栏目模板头部添加访问记录
$typeid=$refObj->TypeLink->TypeInfos['id'];
$today=date('Y-m-d');
$ip=GetIP();

// 检查今天是否已有该IP的访问记录
$cookie_name='type_visit_'.$typeid.'_'.$today;
if(!isset($_COOKIE[$cookie_name])){
    // 更新统计
    $dsql->ExecuteNoneQuery(
        "INSERT INTO dede_type_stats (typeid, visit_date, pv, uv, ip_count) 
         VALUES ({$typeid}, '{$today}', 1, 1, 1)
         ON DUPLICATE KEY UPDATE 
         pv=pv + 1, uv=uv + 1, ip_count=ip_count + 1"
    );
    
    // 设置cookie避免重复计数
    setcookie($cookie_name, '1', strtotime('tomorrow'), '/');
} else {
    // 同一用户多次访问,只增加PV
    $dsql->ExecuteNoneQuery(
        "UPDATE dede_type_stats SET pv=pv + 1 
         WHERE typeid={$typeid} AND visit_date='{$today}'"
    );
}
?>

五、栏目访问统计看板

<?php
// 生成栏目访问统计报表
$sql="SELECT t.typename, s.pv, s.uv, s.visit_date
FROM dede_type_stats s
LEFT JOIN dede_arctype t ON s.typeid=t.id
WHERE s.visit_date >=DATE_SUB(CURDATE(), INTERVAL 7 DAY)
ORDER BY s.pv DESC";

echo "<h3>近7天栏目访问排行</h3>";
echo "<table>
<tr><th>栏目</th><th>PV</th><th>UV</th><th>日期</th></tr>";

$dsql->SetQuery($sql);
$dsql->Execute();
while($row=$dsql->GetArray()){
    echo "<tr>
      <td>{$row['typename']}</td>
      <td>{$row['pv']}</td>
      <td>{$row['uv']}</td>
      <td>{$row['visit_date']}</td>
    </tr>";
}
echo "</table>";
?>

六、热门时间段分析

-- 统计各栏目24小时的访问分布
SELECT 
  typeid,
  HOUR(FROM_UNIXTIME(log_time)) as hour,
  COUNT(*) as visits
FROM visit_log
WHERE log_date=CURDATE()
GROUP BY typeid, hour
ORDER BY typeid, hour;
数据分析建议:除了PV和UV外,建议关注栏目的"跳出率"和"平均停留时长"。跳出率高的栏目说明内容吸引力不足,需要优化内容质量或增加相关推荐。定期(每周或每月)生成栏目访问报告,为内容运营提供数据支撑。