不蒜子是一款简单好用的网站访客数量统计插件。只需两行代码,就可搞定静态网站的计数难题。许多Hexo主题也都内置了这个功能。
不蒜子好虽好,但有一大问题就是如果你换了域名,那你的访客计数就归零了。而官网上写的注册后初始化的功能也是被作者一鸽再鸽。因此要初始化访客计数就只能另辟蹊径了。
总结了网上的方法无非就是在全局加上一段js,在不蒜子计数加载完成后在加上一个初始值。
对于我使用的 Icarus主题,有两种修改方法:
修改主题代码
方法一
我在main.js
中加上了如下代码:
var config = window.IcarusThemeSettings;
if (typeof config !== 'undefined'
&& typeof config.busuanzi_site_offset !== 'undefined' && config.busuanzi == true) {
$(document).ready(function () {
var int = setInterval(fixCount, 100);
var busuanziSiteOffset = parseInt(config.busuanzi_site_offset);
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()) + busuanziSiteOffset);
}
}
});
}
同时修改script.jsx
,在导出的配置中加上busuanzi
的相关配置
const embeddedConfig = `var IcarusThemeSettings = {
site: {
url: '${config.url}',
external_link: ${JSON.stringify(externalLink)}
},
article: {
highlight: {
clipboard: ${clipboard},
fold: '${fold}'
}
},
+ busuanzi: ${config.plugins.busuanzi},
+ busuanzi_site_offset: ${config.busuanzi_site_offset},
};`;
方法二
只修改script.jsx
,通过dangerouslySetInnerHTML
的方式加入script
标签:
// 加上这个
const busuanzi_init = `if (typeof ${config.busuanzi_site_offset} !== 'undefined'
&& ${config.plugins.busuanzi} == true) {
$(document).ready(function () {
var int = setInterval(fixCount, 100);
var busuanziSiteOffset = parseInt(${config.busuanzi_site_offset});
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()) + busuanziSiteOffset);
}
}
});
}`;
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>
<script dangerouslySetInnerHTML={{ __html: `moment.locale("${language}");` }}></script>
<script dangerouslySetInnerHTML={{ __html: embeddedConfig }}></script>
{/* 加上这句 */}
<script dangerouslySetInnerHTML={{ __html: busuanzi_init }}></script>
{clipboard ? <script src={cdn('clipboard', '2.0.4', 'dist/clipboard.min.js')} defer={true}></script> : null}
<Plugins site={site} config={config} page={page} helper={helper} head={false} />
<script src={url_for('/js/main.js')} defer={true}></script>
</Fragment>;
}
添加配置文件
使用上述任一种方法修改后,只需要在主题的配置文件_config.yml
中加上:
busuanzi_site_offset: 100
初始值改多少就看你了😉