不蒜子 UV、PV 统计数据初始化配置

文章首发于 不蒜子 UV、PV 统计数据初始化配置

适用场景

如果你有个运行的网站域名,采用了不蒜子统计 UV、PV等访客和阅读数据,但是有一天,你觉得想要换一个新的域名。当你将网站绑定到新的域名后,突然发现,所有的文章以及网站访客数据全被重置清零------重新计数了。

积累许久的老站点一下子成了新手起站,怎样合并两个域名的访客数据成了你的心头大患。在不蒜子官网上寻求无果后,你偶然来到了这里,眼睛一亮------这不正是你所需要的吗?

修改主题配置

方法一【优先推荐】

在主题文件 themes\icarus\source\js\main.js 中$('div.container div.card[data-type=archives]').addClass('is-hidden-mobile');位置后添加如下代码:

javascript 复制代码
    $('div.container div.card[data-type=tags]').addClass('is-hidden-mobile');
    $('div.container div.card[data-type=archives]').addClass('is-hidden-mobile');

+   // Insert code here
    // Busuanzi Init
    var config = window.IcarusThemeSettings;
    if (typeof config !== 'undefined' && typeof config.busuanzi_site_offset_uv !== 'undefined'
        && typeof config.busuanzi_site_offset_pv !== 'undefined' && config.busuanzi == true) {
        $(document).ready(function () {
            var int = setInterval(fixCount, 100);
            var busuanziSiteOffsetUV = parseInt(config.busuanzi_site_offset_uv);
            var busuanziSiteOffsetPV = parseInt(config.busuanzi_site_offset_pv);
            function fixCount() {
                if ($("#busuanzi_container_site_uv").css("display") != "none" && parseInt($("#busuanzi_value_site_uv").html()) > 0) {
                    clearInterval(int);
                    $("#busuanzi_value_site_uv").html(parseInt($("#busuanzi_value_site_uv").html()) + busuanziSiteOffsetUV);
                }
                if ($("#busuanzi_container_site_pv").css("display") != "none" && parseInt($("#busuanzi_value_site_pv").html()) > 0) {
                    clearInterval(int);
                    $("#busuanzi_value_site_pv").html(parseInt($("#busuanzi_value_site_pv").html()) + busuanziSiteOffsetPV);
                }
            }
        });
    }
+   // End of Insert code here

然后需要在 themes\icarus\layout\common\scripts.jsx 文件中下面位置插入如下代码:

javascript 复制代码
        const embeddedConfig = `var IcarusThemeSettings = {
            article: {
                highlight: {
                    clipboard: ${clipboard},
                    fold: '${fold}'
                }
            },
+   // Insert code here
            busuanzi: ${config.plugins.busuanzi},
            busuanzi_site_offset_uv: ${config.busuanzi_site_offset_uv},
            busuanzi_site_offset_pv: ${config.busuanzi_site_offset_pv}
        };`;
+   // End of Insert code here

完成以上配置后,需要在站点配置文件_config.yml中添加busuanzi_site_offset_uv 以及 busuanzi_site_offset_pv 两个配置项,分别代表旧站点的UV和PV数据,在渲染网页时会将旧站点的数据加到新站点数据上。

yml 复制代码
busuanzi_site_offset_uv: 1000
busuanzi_site_offset_pv: 10000

方法二【备选方案】

当然也可以直接修改 themes\icarus\layout\common\scripts.jsx 文件,但是这种方法似乎延迟较大,一些情况下页面加载较慢时会只显示新站点数据,直到页面加载完毕后才会显示叠加的数据。

javascript 复制代码
+   // Insert code here
    const busuanzi_init = `if (typeof config !== 'undefined' && typeof config.busuanzi_site_offset_uv !== 'undefined'
        && typeof config.busuanzi_site_offset_pv !== 'undefined' && config.busuanzi == true) {
        $(document).ready(function () {
            var int = setInterval(fixCount, 100);
            var busuanziSiteOffsetUV = parseInt(config.busuanzi_site_offset_uv);
            var busuanziSiteOffsetPV = parseInt(config.busuanzi_site_offset_pv);
            function fixCount() {
                if ($("#busuanzi_container_site_uv").css("display") != "none" && parseInt($("#busuanzi_value_site_uv").html()) > 0) {
                    clearInterval(int);
                    $("#busuanzi_value_site_uv").html(parseInt($("#busuanzi_value_site_uv").html()) + busuanziSiteOffsetUV);
                }
                if ($("#busuanzi_container_site_pv").css("display") != "none" && parseInt($("#busuanzi_value_site_pv").html()) > 0) {
                    clearInterval(int);
                    $("#busuanzi_value_site_pv").html(parseInt($("#busuanzi_value_site_pv").html()) + busuanziSiteOffsetPV);
                }
            }
        });
    }`;
+   // End of Insert code here

    return <Fragment>
        <script src={cdn('jquery', '3.3.1', 'dist/jquery.min.js')}></script>
        <script src={cdn('moment', '2.22.2', 'min/moment-with-locales.min.js')}></script>
        {clipboard && <script src={cdn('clipboard', '2.0.4', 'dist/clipboard.min.js')} defer></script>}
        <script dangerouslySetInnerHTML={{ __html: `moment.locale("${language}");` }}></script>
        <script dangerouslySetInnerHTML={{ __html: embeddedConfig }}></script>
+       <script dangerouslySetInnerHTML={{ __html: busuanzi_init }}></script>   {/* Insert this line code */}
        <script data-pjax src={url_for('/js/column.js')}></script>
        <Plugins site={site} config={config} page={page} helper={helper} head={false} />
        <script data-pjax src={url_for('/js/main.js')} defer></script>
        <script data-pjax src={url_for('/js/night.js')} defer={true}></script>
    </Fragment>;

完成以上配置后,需要在站点配置文件_config.yml中添加busuanzi_site_offset_uv 以及 busuanzi_site_offset_pv 两个配置项,分别代表旧站点的UV和PV数据,在渲染网页时会将旧站点的数据加到新站点数据上。

yml 复制代码
busuanzi_site_offset_uv: 1000
busuanzi_site_offset_pv: 10000

参考文章

相关推荐
2601_961146202 天前
实验室等离子表面处理设备安全整改记录:通风、UV、接地三项
笔记·安全·uv
毒爪的小新2 天前
最新 Dify 1.14.0+ 内网离线插件打包、部署完整踩坑方案(解决 uv.lock 依赖校验失败)
运维·ai·uv·dify
醇氧3 天前
CentOS7 使用 uv 安装 Python3.11.9 生产部署文档
uv·python3.11
工业涂料百问10 天前
水性、粉末、UV、溶剂型怎么选?一张对照表看清四条涂层路线的边界
uv
AI 编程助手GPT11 天前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理
Martina_032111 天前
AI生成3D模型UV岛太碎,重绘贴图全是接缝?用6步重整UV并保留原材质
图像处理·人工智能·3d·自然语言处理·贴图·uv·游戏策划
学Linux的语莫18 天前
uv的使用
python·uv
zhang-ge18 天前
python包和项目管理器uv在ubuntu下的安装与使用
开发语言·python·uv
Martina_032119 天前
AI生成3D模型怎么判断能不能继续编辑?用6步检查Mesh、材质、UV与导出文件
图像处理·人工智能·3d·ai·自然语言处理·uv·游戏策划
饕餮争锋19 天前
python开发工具uv简介
开发语言·python·uv