栏目访问统计概述
织梦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外,建议关注栏目的"跳出率"和"平均停留时长"。跳出率高的栏目说明内容吸引力不足,需要优化内容质量或增加相关推荐。定期(每周或每月)生成栏目访问报告,为内容运营提供数据支撑。