当前位置: 首页 > news >正文

Hexo博客Icarus主题不蒜子 UV、PV 统计数据初始化配置

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

适用场景

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

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

修改主题配置

方法一【优先推荐】

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

    $('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 Initvar 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 文件中下面位置插入如下代码:

        const embeddedConfig = `var IcarusThemeSettings = {article: {highlight: {clipboard: ${clipboard},fold: '${fold}'}},
+   // Insert code herebusuanzi: ${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数据,在渲染网页时会将旧站点的数据加到新站点数据上。

busuanzi_site_offset_uv: 1000
busuanzi_site_offset_pv: 10000

方法二【备选方案】

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

+   // Insert code hereconst 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 herereturn <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数据,在渲染网页时会将旧站点的数据加到新站点数据上。

busuanzi_site_offset_uv: 1000
busuanzi_site_offset_pv: 10000

参考文章

  • Zhouyang Lu, Hexo折腾系列(五)不蒜子计数器初始化, 江风引雨的小站

相关文章:

Hexo博客Icarus主题不蒜子 UV、PV 统计数据初始化配置

文章首发于 不蒜子 UV、PV 统计数据初始化配置 适用场景 如果你有个运行的网站域名&#xff0c;采用了不蒜子统计 UV、PV等访客和阅读数据&#xff0c;但是有一天&#xff0c;你觉得想要换一个新的域名。当你将网站绑定到新的域名后&#xff0c;突然发现&#xff0c;所有的文章…...

在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧

目录 引言 一、历史中的非对称作战&#xff1a;从李牧到八路军的智谋传承 李牧戍边&#xff1a;古代军事博弈中的资源重构 八路军的游击战&#xff1a;现代战争中的智慧延续 二、创业界的逆袭之道&#xff1a;小米与拼多多的资源重构 从MVP到杠杆解 社交裂变与资源错配 …...

SQLAlchemy系列教程:如何执行原生SQL

Python中的数据库交互提供了高级API。但是&#xff0c;有时您可能需要执行原始SQL以提高效率或利用数据库特定的特性。本指南介绍在SQLAlchemy框架内执行原始SQL。 在SQLAlchemy中执行原生SQL SQLAlchemy虽然以其对象-关系映射&#xff08;ORM&#xff09;功能而闻名&#xff…...

绪论数据结构基本概念(刷题笔记)

&#xff08;一&#xff09;单选题 1.与数据元素本身的形式、相对位置和个数无关的是&#xff08;B&#xff09;【广东工业大学2019年829数据结构】 A.数据存储结构 B.数据逻辑结构 C.算法 D.操作 2.在数据结构的讨论中把数据结构从逻辑上分为&#xff08;C&#xff09;【中国…...

delphi 正则提取html中的内容

function ExtractTextFromHTML(const HTML: string): string; var RegEx: TRegEx; begin Result := HTML; // 移除<script>标签及其内容 Result := TRegEx.Replace(Result, <script.*?>.*?</script>, , [roIgnoreCase, roSingleLine]); // 移除<s…...

18天 - 常见的 HTTP 状态码有哪些?HTTP 请求包含哪些内容,请求头和请求体有哪些类型?HTTP 中 GET 和 POST 的区别是什么?

常见的 HTTP 状态码有哪些&#xff1f; HTTP 状态码用于指示服务器对客户端请求的响应结果&#xff0c;常见的 HTTP 状态码可以分为以下几类&#xff1a; 1. 信息类&#xff08;1xx&#xff09; 100 Continue&#xff1a;客户端应继续发送请求。101 Switching Protocols&…...

从0开始的操作系统手搓教程45——实现exec

目录 建立抽象 实现加载 实现sys_execv &#xff01;&#xff01;&#xff01;提示&#xff1a;因为实现问题没有测试。所以更像是笔记&#xff01; exec 函数的作用是用新的可执行文件替换当前进程的程序体。具体来说&#xff0c;exec 会将当前正在运行的用户进程的进程体&…...

Android TCP封装工具类

TCP通信的封装&#xff0c;我们可以从以下几个方面进行改进&#xff1a; 线程池优化&#xff1a;使用更高效的线程池配置&#xff0c;避免频繁创建和销毁线程。 连接重试机制&#xff1a;在网络不稳定时&#xff0c;自动重试连接。 心跳机制&#xff1a;保持长连接&#xff…...

解决火绒启动时,报安全服务异常,无法保障计算机安全

1.找到控制面板-安全和维护-更改用户账户控制设置 重启启动电脑解决。...

Spring Boot框架总结(超级详细)

前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等&#xff0c;如果能耐心看完&#xff0c;想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念&#xff1a; 约定优于配置&#…...

为什么要使用前缀索引,以及建立前缀索引:sql示例

背景&#xff1a; 你想啊&#xff0c;数据库里有些字段&#xff0c;它老长了&#xff0c;就像那种 varchar(255) 的字段&#xff0c;这玩意儿要是整个字段都拿来建索引&#xff0c;那可太占地方了。打个比方&#xff0c;这就好比你要在一个超级大的笔记本上记东西&#xff0c;每…...

Nuxt3 ssr build/dev时区分不同的环境

package.json "scripts": {"build": "nuxt build --dotenv .env.prod","build:dev": "nuxt build --dotenv .env.dev","postbuild": "mv -f .output ./dist/.output", //支持自定义文件名"dev&quo…...

嵌入式学习第二十四天--网络 服务器

服务器模型 tcp服务器: socket bind listen accept recv/send close 1.支持多客户端访问 //单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 2.支持多客户端同时访问 (并发能力) 并发服务器 socket bind …...

tcp/ip协议配置参数有哪些?tcp/ip协议需要设置的参数有哪些

TCP/IP协议的配置参数是确保网络设备能够正确接入互联网并与其他设备进行通信的关键设置。这些参数主要包括以下几个方面&#xff1a; 1. IP地址 定义&#xff1a;IP地址是网络中设备的唯一标识符&#xff0c;用于标识和定位设备。它由32位二进制数组成&#xff0c;通常采用点…...

我有点担心开始AI中台了

有个特点历史教训是很难吸取的 从大数据开始就是一窝蜂的去搞&#xff0c;不管有没有什么数据量。反正要来个Hadoop。其实有些企业数据一块硬盘都放得下。 微服务来了&#xff0c;也不管自己的系统是不是适合微服务。我个人经验得出&#xff0c;to B和to G的业务场景&#xf…...

《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》

导语​ "你是否想过用Python开发一款可玩性高的双人合作游戏&#xff1f;本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏&#xff01;包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点&#xff0c;文末提供完整代码包下载&#xff01;" 哈…...

优选算法系列(1. 双指针_上)

目录 双指针 一&#xff1a;移动零&#xff08;easy&#xff09; 题目链接&#xff1a;移动零 解法: 代码&#xff1a; 二&#xff1a;复写零&#xff08;easy&#xff09; 题目链接&#xff1a;复写零 ​编辑 解法&#xff1a; 代码&#xff1a; 三&#xff1a;快乐…...

永洪科技深度分析实战,零售企业的销量预测

随着人工智能技术的不断发展&#xff0c;智能预测已经成为各个领域的重要应用之一。现在&#xff0c;智能预测技术已经广泛应用于金融、零售、医疗、能源等领域&#xff0c;为企业和个人提供决策支持。 智能预测技术通过分析大量的数据&#xff0c;利用机器学习和深度学习算法…...

c语言笔记 函数参数的等价(上)

这三种写法在 C 语言中是等价的&#xff0c;因为它们都用于声明一个指向二维数组的指针&#xff0c;或者用于声明一个二维数组作为函数参数。它们的等价性源于 C 语言中数组和指针之间的密切关系。让我们逐一分析这三种写法&#xff1a; 在C语言中&#xff0c;当数组作为函数参…...

hive面试题--left join的坑

student 表&#xff1a; 课程表course: 1、key为null, 不关联 select * from student s left join course c on s.id c.s_id;2、on中过滤条件 与 where 过滤条件区别 on and c.id<>‘1001’ 先过滤右表数据&#xff0c;然后与左表关联 select * from student s le…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...