想要给网站下展示PV,记录下如何在Hexo博客中实现网站底部的PV(页面访问量)统计并进行个性化展示。
当前PV统计实现
使用Supabase PostgreSQL数据库存储PV数据,并通过JavaScript动态更新网站底部的访问量显示,且个性化显示格式为:”已有 {访问量}人访问~”
核心实现文件
<div class="footer-content"> <div class="footer-text"> <span> <span id="site-stats" class="stats-text"></span> <% } %> </div> </div>
|
PV统计JavaScript实现 (siteStats.js)
(function() { async function initStats() { await waitForSupabaseInit(); await window.SupabaseStats.incrementPV(); const stats = await window.SupabaseStats.getStats(); updateStatsDisplay(stats.pv); } function waitForSupabaseInit() { return new Promise((resolve) => { const checkSupabase = () => { if (window.SupabaseStats && window.SupabaseStats.isInitialized()) { resolve(); } else { setTimeout(checkSupabase, 100); } }; checkSupabase(); }); } function updateStatsDisplay(pv) { const statsElement = document.getElementById('site-stats'); if (statsElement) { statsElement.textContent = `已有${formatNumber(pv)}人访问~`; } } function formatNumber(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initStats); } else { initStats(); } })();
|
个性化展示方法
修改显示格式
可以根据需要修改siteStats.js
文件中的updateStatsDisplay
函数,实现不同的个性化展示效果:
function updateStatsDisplay(pv) { const statsElement = document.getElementById('site-stats'); if (statsElement) { statsElement.textContent = `已有${formatNumber(pv)}人访问~`; } }
|
添加样式美化
您可以在footer.ejs文件中自定义统计信息的样式:
.stats-text { color: #666; margin: 0; }
|
修改后重建
修改完成后,重新构建以更改生效:
常见问题解决
统计数据不显示
如果网站底部的访问量不显示,可能的原因有:
- Supabase配置不正确或未配置
- 网络连接问题导致无法连接到Supabase
- 浏览器阻止了JavaScript执行
自定义格式不生效
如果修改了显示格式但没有生效,可以尝试:
- 清除浏览器缓存
- 重新构建博客(
npm run build
)
- 检查JavaScript是否有语法错误
结语
希望通过本文介绍的方法,大家可以轻松实现网站底部PV统计的个性化展示,也可以根据自己的喜好和博客风格,选择或设计合适的显示文案和样式,让你的博客更加独特和个性化。
评论