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 @@ + + +
+
小板报
+ +
+ + + +
+ + + \ No newline at end of file