From 72150c5c9ca7c348da8797e263aefebc5e25b679 Mon Sep 17 00:00:00 2001
From: "1152958806@qq.com" <1152958806@qq.com>
Date: Fri, 28 Jul 2023 13:29:09 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E4=BD=8D=E7=BD=AE?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B0=8F=E6=9D=BF=E6=8A=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
settings.yaml | 20 ++
templates/assets/libs/welcome/welcome.js | 248 +++++++++++++++++++
templates/modules/head.html | 8 +-
templates/modules/widgets/aside/welcome.html | 25 ++
4 files changed, 300 insertions(+), 1 deletion(-)
create mode 100644 templates/assets/libs/welcome/welcome.js
create mode 100644 templates/modules/widgets/aside/welcome.html
diff --git a/settings.yaml b/settings.yaml
index b13cc453..557f08c9 100644
--- a/settings.yaml
+++ b/settings.yaml
@@ -603,6 +603,26 @@ spec:
name: wechatImgBack
placeholder: 公众号背面图
help: 图片可以从公众号后台下载物料或者自制
+ - $formkit: group
+ name: welcome
+ label: 小板报
+ value:
+ key:
+ children:
+ - $formkit: text
+ name: key
+ label: 腾讯位置服务Key
+ help: 申请地址:https://lbs.qq.com/dev/console/application/mine
+ - $formkit: text
+ name: locationLng
+ label: 经度坐标
+ help: 可访问 https://lbs.qq.com/getPoint 拾取坐标,示例:113.215456
+ placeholder: 请输入经度坐标
+ - $formkit: text
+ name: locationLat
+ label: 纬度坐标
+ help: 示例:22.582401
+ placeholder: 请输入纬度坐标
- $formkit: number
name: recentPost
label: 最新文章
diff --git a/templates/assets/libs/welcome/welcome.js b/templates/assets/libs/welcome/welcome.js
new file mode 100644
index 00000000..75ef06ff
--- /dev/null
+++ b/templates/assets/libs/welcome/welcome.js
@@ -0,0 +1,248 @@
+//get请求
+$.ajax({
+ type: 'get',
+ url: 'https://apis.map.qq.com/ws/location/v1/ip',
+ data: {
+ key: GLOBAL_CONFIG.source.welcome.key,
+ output: 'jsonp',
+ },
+ dataType: 'jsonp',
+ success: function (res) {
+ ipLocation = res;
+ }
+})
+function getDistance(e1, n1, e2, n2) {
+ const R = 6371
+ const { sin, cos, asin, PI, hypot } = Math
+ let getPoint = (e, n) => {
+ e *= PI / 180
+ n *= PI / 180
+ return { x: cos(n) * cos(e), y: cos(n) * sin(e), z: sin(n) }
+ }
+
+ let a = getPoint(e1, n1)
+ let b = getPoint(e2, n2)
+ let c = hypot(a.x - b.x, a.y - b.y, a.z - b.z)
+ let r = asin(c / 2) * 2 * R
+ return Math.round(r);
+}
+
+function showWelcome() {
+
+ let dist = getDistance(GLOBAL_CONFIG.source.welcome.locationLng,GLOBAL_CONFIG.source.welcome.locationLat, ipLocation.result.location.lng, ipLocation.result.location.lat); //这里记得换成自己的经纬度
+ let pos = ipLocation.result.ad_info.nation;
+ let ip;
+ let posdesc;
+ //根据国家、省份、城市信息自定义欢迎语
+ switch (ipLocation.result.ad_info.nation) {
+ case "日本":
+ posdesc = "よろしく,一起去看樱花吗";
+ break;
+ case "美国":
+ posdesc = "Let us live in peace!";
+ break;
+ case "英国":
+ posdesc = "想同你一起夜乘伦敦眼";
+ break;
+ case "俄罗斯":
+ posdesc = "干了这瓶伏特加!";
+ break;
+ case "法国":
+ posdesc = "C'est La Vie";
+ break;
+ case "德国":
+ posdesc = "Die Zeit verging im Fluge.";
+ break;
+ case "澳大利亚":
+ posdesc = "一起去大堡礁吧!";
+ break;
+ case "加拿大":
+ posdesc = "拾起一片枫叶赠予你";
+ break;
+ case "中国":
+ pos = ipLocation.result.ad_info.province + " " + ipLocation.result.ad_info.city + " " + ipLocation.result.ad_info.district;
+ ip = ipLocation.result.ip;
+ switch (ipLocation.result.ad_info.province) {
+ case "北京市":
+ posdesc = "北——京——欢迎你~~~";
+ break;
+ case "天津市":
+ posdesc = "讲段相声吧";
+ break;
+ case "河北省":
+ posdesc = "山势巍巍成壁垒,天下雄关铁马金戈由此向,无限江山";
+ break;
+ case "山西省":
+ posdesc = "展开坐具长三尺,已占山河五百余";
+ break;
+ case "内蒙古自治区":
+ posdesc = "天苍苍,野茫茫,风吹草低见牛羊";
+ break;
+ case "辽宁省":
+ posdesc = "我想吃烤鸡架!";
+ break;
+ case "吉林省":
+ posdesc = "状元阁就是东北烧烤之王";
+ break;
+ case "黑龙江省":
+ posdesc = "很喜欢哈尔滨大剧院";
+ break;
+ case "上海市":
+ posdesc = "众所周知,中国只有两个城市";
+ break;
+ case "江苏省":
+ switch (ipLocation.result.ad_info.city) {
+ case "南京市":
+ posdesc = "这是我挺想去的城市啦";
+ break;
+ case "苏州市":
+ posdesc = "上有天堂,下有苏杭";
+ break;
+ default:
+ posdesc = "散装是必须要散装的";
+ break;
+ }
+ break;
+ case "浙江省":
+ posdesc = "东风渐绿西湖柳,雁已还人未南归";
+ break;
+ case "河南省":
+ switch (ipLocation.result.ad_info.city) {
+ case "郑州市":
+ posdesc = "豫州之域,天地之中";
+ break;
+ case "南阳市":
+ posdesc = "臣本布衣,躬耕于南阳此南阳非彼南阳!";
+ break;
+ case "驻马店市":
+ posdesc = "峰峰有奇石,石石挟仙气嵖岈山的花很美哦!";
+ break;
+ case "开封市":
+ posdesc = "刚正不阿包青天";
+ break;
+ case "洛阳市":
+ posdesc = "洛阳牡丹甲天下";
+ break;
+ default:
+ posdesc = "可否带我品尝河南烩面啦?";
+ break;
+ }
+ break;
+ case "安徽省":
+ posdesc = "蚌埠住了,芜湖起飞";
+ break;
+ case "福建省":
+ posdesc = "井邑白云间,岩城远带山";
+ break;
+ case "江西省":
+ posdesc = "落霞与孤鹜齐飞,秋水共长天一色";
+ break;
+ case "山东省":
+ posdesc = "遥望齐州九点烟,一泓海水杯中泻";
+ break;
+ case "湖北省":
+ switch (ipLocation.result.ad_info.city) {
+ case "黄冈市":
+ posdesc = "红安将军县!辈出将才!";
+ break;
+ default:
+ posdesc = "来碗热干面~";
+ break;
+ }
+ break;
+ case "湖南省":
+ posdesc = "74751,长沙斯塔克";
+ break;
+ case "广东省":
+ switch (ipLocation.result.ad_info.city) {
+ case "广州市":
+ posdesc = "看小蛮腰,喝早茶了嘛~";
+ break;
+ case "深圳市":
+ posdesc = "今天你逛商场了嘛~";
+ break;
+ case "阳江市":
+ posdesc = "阳春合水!博主家乡~ 欢迎来玩~";
+ break;
+ default:
+ posdesc = "来两斤福建人~";
+ break;
+ }
+ break;
+ case "广西壮族自治区":
+ posdesc = "桂林山水甲天下";
+ break;
+ case "海南省":
+ posdesc = "朝观日出逐白浪,夕看云起收霞光";
+ break;
+ case "四川省":
+ posdesc = "康康川妹子";
+ break;
+ case "贵州省":
+ posdesc = "茅台,学生,再塞200";
+ break;
+ case "云南省":
+ posdesc = "玉龙飞舞云缠绕,万仞冰川直耸天";
+ break;
+ case "西藏自治区":
+ posdesc = "躺在茫茫草原上,仰望蓝天";
+ break;
+ case "陕西省":
+ posdesc = "来份臊子面加馍";
+ break;
+ case "甘肃省":
+ posdesc = "羌笛何须怨杨柳,春风不度玉门关";
+ break;
+ case "青海省":
+ posdesc = "牛肉干和老酸奶都好好吃";
+ break;
+ case "宁夏回族自治区":
+ posdesc = "大漠孤烟直,长河落日圆";
+ break;
+ case "新疆维吾尔自治区":
+ posdesc = "驼铃古道丝绸路,胡马犹闻唐汉风";
+ break;
+ case "台湾省":
+ posdesc = "我在这头,大陆在那头";
+ break;
+ case "香港特别行政区":
+ posdesc = "永定贼有残留地鬼嚎,迎击光非岁玉";
+ break;
+ case "澳门特别行政区":
+ posdesc = "性感荷官,在线发牌";
+ break;
+ default:
+ posdesc = "带我去你的城市逛逛吧!";
+ break;
+ }
+ break;
+ default:
+ posdesc = "带我去你的国家逛逛吧";
+ break;
+ }
+
+ //根据本地时间切换欢迎语
+ let timeChange;
+ let date = new Date();
+ if (date.getHours() >= 5 && date.getHours() < 11) timeChange = "🌤️ 早上好,一日之计在于晨";
+ else if (date.getHours() >= 11 && date.getHours() < 13) timeChange = "☀️ 中午好,记得午休喔~";
+ else if (date.getHours() >= 13 && date.getHours() < 17) timeChange = "🕞 下午好,饮茶先啦!";
+ else if (date.getHours() >= 17 && date.getHours() < 19) timeChange = "🚶♂️ 即将下班,记得按时吃饭~";
+ else if (date.getHours() >= 19 && date.getHours() < 24) timeChange = "🌙 晚上好,夜生活嗨起来!";
+ else timeChange = "夜深了,早点休息,少熬夜";
+
+// 新增ipv6显示为指定内容
+ if (ip.includes(":")) {
+ ip = "
好复杂,咱看不懂~(ipv6)";
+ }
+ try {
+ //自定义文本和需要放的位置
+ document.getElementById("welcome-info").innerHTML =
+ `欢迎来自 ${pos} 的小友💖
${posdesc}🍂
当前位置距博主约 ${dist} 公里!
您的IP地址为:${ip}
${timeChange}
`;
+ } catch (err) {
+ console.log("Pjax无法获取元素")
+ }
+}
+window.onload = showWelcome;
+// 如果使用了pjax在加上下面这行代码
+document.addEventListener('pjax:complete', showWelcome);
\ No newline at end of file
diff --git a/templates/modules/head.html b/templates/modules/head.html
index 62a2e8dd..ec30c25e 100644
--- a/templates/modules/head.html
+++ b/templates/modules/head.html
@@ -163,13 +163,14 @@
-
+
+
@@ -217,6 +218,11 @@
},
twikoo:{
js: '/themes/theme-hao/assets/libs/twikoo/twikoo.all.min.js'
+ },
+ welcome:{
+ key:"[(${theme.config.sidebar.welcome.key})]",
+ locationLng: [[${theme.config.sidebar.welcome.locationLng}]],
+ locationLat: [[${theme.config.sidebar.welcome.locationLat}]],
}
},
date_suffix: {
diff --git a/templates/modules/widgets/aside/welcome.html b/templates/modules/widgets/aside/welcome.html
new file mode 100644
index 00000000..12b33bd1
--- /dev/null
+++ b/templates/modules/widgets/aside/welcome.html
@@ -0,0 +1,25 @@
+
+
+