适用场景
如果你有个运行的网站域名,采用了不蒜子统计 UV、PV等访客和阅读数据,但是有一天,你觉得想要换一个新的域名。当你将网站绑定到新的域名后,突然发现,所有的文章以及网站访客数据全被重置清零——重新计数了。
积累许久的老站点一下子成了新手起站,怎样合并两个域名的访客数据成了你的心头大患。在不蒜子官网上寻求无果后,你偶然来到了这里,眼睛一亮——这不正是我所需要的吗?
修改主题配置
方法一【优先推荐】
在主题文件 themes\icarus\source\js\main.js
中$('div.container div.card[data-type=archives]').addClass('is-hidden-mobile');
位置后添加如下代码:
themes\icarus\source\js\main.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| $('div.container div.card[data-type=tags]').addClass('is-hidden-mobile'); $('div.container div.card[data-type=archives]').addClass('is-hidden-mobile');
+ 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); } } }); } +
|
然后需要在 themes\icarus\layout\common\scripts.jsx
文件中下面位置插入如下代码:
themes\icarus\layout\common\scripts.jsx1 2 3 4 5 6 7 8 9 10 11 12 13
| 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} };`; +
|
完成以上配置后,需要在站点配置文件_config.yml
中添加busuanzi_site_offset_uv
以及 busuanzi_site_offset_pv
两个配置项,分别代表旧站点的UV和PV数据,在渲染网页时会将旧站点的数据加到新站点数据上。
1 2
| busuanzi_site_offset_uv: 1000 busuanzi_site_offset_pv: 10000
|
方法二【备选方案】
当然也可以直接修改 themes\icarus\layout\common\scripts.jsx
文件,但是这种方法似乎延迟较大,一些情况下页面加载较慢时会只显示新站点数据,直到页面加载完毕后才会显示叠加的数据。
themes\icarus\layout\common\scripts.jsx1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| + 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); } } }); }`; +
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数据,在渲染网页时会将旧站点的数据加到新站点数据上。
1 2
| busuanzi_site_offset_uv: 1000 busuanzi_site_offset_pv: 10000
|
参考文章