hexo基于安知鱼魔改教程:侧边栏添加个性定位欢迎信息

hexo基于安知鱼魔改教程:侧边栏添加个性定位欢迎信息

  • 使用 fetch 方式请求
  • 适配 获取客户端IP信息接口
  • css适配

JavaScript

在hexo目录下新建source/js/welcome.js文件,新增以下内容(若没有js文件夹直接新建即可)

welcome.js

fetch('https://api.qjqq.cn/api/Local')
    .then(response => response.json())
    .then(data => {
        ipLocation = data;
        showWelcome();
    })
    .catch(error => console.error('Error:', error));


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(121.413921, 31.089290, ipLocation.data.lng, ipLocation.data.lat); //修改自己的经度(121.413921)纬度(31.089290)
    let pos = ipLocation.data.country;
    let ip = ipLocation.ip;
    let posdesc;

    // 以下的代码需要根据新API返回的结果进行相应的调整
    switch (ipLocation.data.country) {
        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.data.prov + " " + ipLocation.data.city + " " + ipLocation.data.district;
            switch (ipLocation.data.prov) {
                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.data.city) {
                        case "南京市":
                            posdesc = "这是我挺想去的城市啦";
                            break;
                        case "苏州市":
                            posdesc = "上有天堂,下有苏杭";
                            break;
                        default:
                            posdesc = "散装是必须要散装的";
                            break;
                    }
                    break;
                case "浙江省":
                    posdesc = "东风渐绿西湖柳,雁已还人未南归";
                    break;
                case "河南省":
                    switch (ipLocation.data.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.data.city) {
                        case "黄冈市":
                            posdesc = "红安将军县!辈出将才!";
                            break;
                        default:
                            posdesc = "来碗热干面~";
                            break;
                    }
                    break;
                case "湖南省":
                    posdesc = "74751,长沙斯塔克";
                    break;
                case "广东省":
                    switch (ipLocation.data.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 = "夜深了,早点休息,少熬夜";

    try {
        //自定义文本和需要放的位置
        document.getElementById("welcome-info").innerHTML =
            `欢迎来自 ${pos} 的小友💖
${posdesc}🍂
当前位置距博主约 ${dist} 公里!
您的IP地址为:${ip}
${timeChange}
`; } catch (err) { console.log("Pjax无法获取元素"); } } // Pjax完成页面切换的事件回调处理 function handlePjaxComplete() { showWelcome(); } window.onload = function() { showWelcome(); // 添加pjax:complete事件监听 document.addEventListener("pjax:complete", handlePjaxComplete); };

css

hexo目录下新建source/css/welcome.css文件,新增以下内容(若没有css文件夹直接新建即可)

welcome.css

#welcome-info {
    overflow: hidden;
    border-radius: 14px;
    --kouseki-welcome-color: #49B1F5;
    --kouseki-ip-color: #49B1F5;
    --kouseki-gl-size: 16px!important;
  }

主题文件配置

  • _config.anzhiyu.yml主题配置文件下inject配置项中的bottom引入welcome.js
inject:
  head:
    -  # 个性定位欢迎信息
  bottom:
    -  # 个性定位欢迎信息
  • _config.anzhiyu.yml中找到card_announcement并修改为以下信息:
card_announcement:
  enable: true
  content: 

大功告成

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇