不蒜子 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

参考文章

相关推荐
chushiyunen16 小时前
uv使用笔记(python包的管理工具)
笔记·python·uv
mxwin16 小时前
Unity Shader 实战屏幕颜色抓取实现径向模糊 (URP)
unity·游戏引擎·shader·uv
zxm85132 天前
UV使用及UV与Anaconda的区别
大数据·学习·机器学习·uv
mxwin2 天前
Unity Shader 极坐标特效 从数学原理到实战案例
unity·游戏引擎·shader·uv
wa的一声哭了4 天前
uv简单使用
uv
mxwin4 天前
Unity Shader UI 流光效果完全推导指南
ui·unity·游戏引擎·shader·uv
kishu_iOS&AI4 天前
PyCharm 结合 uv 进行 AI 大模型开发
人工智能·pycharm·大模型·uv
mxwin4 天前
Unity Shader FLOWMAP岩浆流动制作案例
unity·游戏引擎·shader·uv
mxwin5 天前
Unity Shader 用 Ramp 贴图实现薄膜干涉效果
unity·游戏引擎·贴图·shader·uv
mxwin5 天前
Unity Shader · UV 技术 用 UV 坐标打造水波涟漪效果
unity·游戏引擎·shader·uv