【已修改新版本】添加天气小组件（侧边栏）
教程之前的心知天气版本 已失效 ，本版本由作者开发，灵感来源于Shanshui’s Blog，实现来自于Kimi K2.6大模型使用OpenMeteo天气API，支持自动定位（浏览器权限），反向查询来自 BigDataCloud 免费 API本版本无需任何公钥与私钥将以下代码放入/usr/themes/handsome/component/sidebar.php第 76 行左右<?php include __DIR__ . '/weather-widget.php'; ?> 随后在 /usr/themes/handsome/component/ 下，创建一个新文件文件名称:weather-widget.php文件中放入以下代码<?php /** * 天气小组件 v4 - 适配 Typecho Handsome 主题原生样式 * 去除城市切换下拉框，纯自动定位/默认城市 * 使用 Open-Meteo 免费 API + BigDataCloud 反向地理编码 * 作者:センク森辞 以及 Kimi * 灵感来源于 blog.shanshui.site * * 安装方法： * 1. 将本文件保存到 /usr/themes/handsome/component/weather-widget.php * 2. 在 /usr/themes/handsome/component/sidebar.php 中合适位置添加： * <?php include __DIR__ . '/weather-widget.php'; ?> * 3. 修改下方 $default_city 为你想默认显示的城市 */ // ==================== 配置区域 ==================== $default_city = '北京'; // 默认城市（当定位失败时显示） $cache_minutes = 10; // 缓存时间（分钟） // ================================================== ?> <?php _me("天气") ?> °C 如果你后续想换成和风天气或高德天气 API（需要你自己申请 Key），只需要替换 getCityCoords 和 getWeather 两个函数即可。
前言handsome 主题是一款精心设计的 typecho 主题，它在保持功能丰富的同时又不失简洁优雅。本文将介绍一些实用的美化技巧，帮助你打造一个独具特色的博客。美化教程右侧导航栏打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/*右侧导航栏*/ .sidebar-icon svg.feather.feather-thumbs-up { color: #ff0000; } .sidebar-icon svg.feather.feather-message-square { color: #495dc3; } .sidebar-icon svg.feather.feather-gift { color: #52de97; } 主题标题居中打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/*主题标题居中*/ header.bg-light.lter.wrapper-md { text-align: center; } 页面两侧框架留白间距打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/*两侧框架留白间距*/ @media (min-width: 1700px) { .app.container { width: 95%; } .app.container .app-aside, .app.container .app-header { max-width: 95%; } } @media (min-width: 2048px) { .app.container { width: 93%; } .app.container .app-aside, .app.container .app-header { max-width: 93%; } } @media (min-width: 1200px) { .app.container { width: 90%; } .app.container .app-aside, .app.container .app-header { max-width: 90%; } .app.container .app-footer-fixed { max-width: 970px; } .app.container.app-aside-folded .app-footer-fixed { max-width: 1110px; } .app.container.app-aside-dock .app-footer-fixed { max-width: 90%; } } handsome 原生入站提示打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部代码即可 评论一键赞、踩、打卡打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可 window.SIMPALED = {}; // 创建全局对象 SIMPALED，用于存放编辑器功能 // 定义一个函数 a，用于在文本框中插入文字 function a(a, b, c) { if (document.selection) { a.focus(); sel = document.selection.createRange(); c ? (sel.text = b + sel.text + c) : (sel.text = b); a.focus(); } else if (a.selectionStart || "0" == a.selectionStart) { var l = a.selectionStart; var m = a.selectionEnd; var n = m; c ? (a.value = a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length)) : (a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length)); c ? (n += b.length + c.length) : (n += b.length - m + l); l == m && c && (n -= c.length); a.focus(); a.selectionStart = n; a.selectionEnd = n; } else { a.value += b + c; a.focus(); } } window.SIMPALED.Editor = { daka: function() { var b = new Date().toLocaleTimeString(); var c = document.getElementById("comment") || 0; a(c, "滴！学生卡！打卡时间：" + b, "，请上车的乘客系好安全带~"); // 将光标移到文本最后 if (c.setSelectionRange) { var len = c.value.length; c.setSelectionRange(len, len); c.focus(); } else if (c.createTextRange) { var range = c.createTextRange(); range.collapse(false); range.select(); c.focus(); } }, zan: function() { var c = document.getElementById("comment") || 0; var yuluResponses = [ " 这篇文章展现了作者深邃的思想和独特的观点，令人赞叹不已。 ", " 文章中的优美语言和精彩描写让人感受到一种心灵的震撼和触动，实在值得赞美。 ", " 作者以敏锐的洞察力和真挚的情感，将文字融为一体，这种写作技巧令人赞赏。 ", " 这篇文章展现了作者的才华和学识，无不让人对其赞美有加。 ", " 文章中的感人故事和深刻的寓意令人深深地感动和赞叹。 ", " 作者的文字流畅而富有节奏感，令人为之倾倒，实在是一篇令人赞美的佳作。 ", " 文章中的深邃思考和清晰逻辑令人对作者的才华赞赏不已。 ", " 这篇文章的独到见解和新颖观点，让人对作者的创意赞美有加。 ", " 作者运用生动的比喻和细腻的描写，让读者仿佛身临其境，实在是一种令人赞美的写作艺术。 ", " 这篇文章的深情笔触和真挚感受让人深深感叹，实在是一篇值得赞美的美文。 ", ]; var randomIndex = Math.floor(Math.random() * yuluResponses.length); var randomResponse = yuluResponses[randomIndex]; a(c, randomResponse); }, cai: function() { var c = document.getElementById("comment") || 0; var yuluResponses = [ " 我是来替大家批评博主的，我是来批评的，这篇文章的结构有点混乱，需要更好地组织和展开内容。博主多多像我学习啊！ ", " 我是来替大家批评博主的，作者的表达能力有待提高，有些地方表述不够清晰，读者可能会感到困惑。博主多多像我学习啊！ ", " 我是来替大家批评博主的，文章的语法错误较多，建议仔细检查并进行修改。博主多多像我学习啊！ ", " 我是来替大家批评博主的，内容有些空洞，需要更多具体的例子或细节来支撑观点。博主多多像我学习啊！ ", " 我是来替大家批评博主的，文章缺乏逻辑，有些段落之间的衔接不够自然。博主多多像我学习啊！ ", " 我是来替大家批评博主的，作者的观点没有充分论证，需要更多的证据和理由来支持主张。博主多多像我学习啊！ ", " 我是来替大家批评博主的，文章中出现了一些拼写错误和用词不当的情况，建议进行仔细校对。博主多多像我学习啊！ ", " 我是来替大家批评博主的，语言表达过于简单，可以尝试使用更丰富的词汇和句式来提升文章质量。博主多多像我学习啊！ ", " 我是来替大家批评博主的，这篇文章的主题不够突出，需要更好地明确中心思想。博主多多像我学习啊！ ", " 我是来替大家批评博主的，文章缺乏吸引人的开头，建议引入更有趣的故事或引语来吸引读者注意。博主多多像我学习啊！ ", ]; var randomIndex = Math.floor(Math.random() * yuluResponses.length); var randomResponse = yuluResponses[randomIndex]; a(c, randomResponse); }, yulu: function() { var c = document.getElementById("comment") || 0; var yuluResponses = [ " 有你在的日子才是我的日常。 ", " 夹在我女友与前女友与青梅竹马间的果然是修罗场！ ", " 既然如此，就再努力一次吧。别在这里愁眉不展，也不要再自欺欺人，重新来过！ ", " 比自己,比梦想更重要的东西永远都存在着... ", " 嘛，那又怎么样呢？ ", " 自身不先改变的话，一切都不会改变。 ", " 比起有一百个朋友，不如有个比一百人还要重要的真心朋友。 ", " 我有在反省，但我不后悔。 ", " 要超越过去与悲伤，用坚强和笑容去开拓明天。 ", " 男人许下的诺言就一定要遵守。 ", " 没有回忆就去创造回忆，没有道路就去开辟道路。 ", " 我敬你是条汉子！ ", " 不相信自己的人，连努力的价值都没有。 ", " 微风摇曳着窗帘，夕阳斜射入教室，在那里鼓起勇气告白的少年。即使现在也能清晰地回想起她的声音「当朋友，不行吗？」 ", " 就算是沉落地面的太阳，只要夜晚过了一定会再度升起，不管有什么痛苦或难过的事，跟今天截然不同的明天也一定会到来。 ", " 我的腿让我停下，可是心却不允许我那么做。 ", " 生活就像超级女生，走到最后的都是纯爷们。 ", " 我要拼，装上假牙也要拼！ ", " 想要成为无论多么悲伤的时候，也能够漂亮微笑的人吧。 ", " 人们只是用好人来称呼对自己有用的人而以，不存在对所有人都有用的人。 ", " 烈焰中舞动的火花，将赐予邪恶异性交往以天罚。 ", " 无论乌云有多浓厚，星星也一定还在，只是暂时看不到了而已。 ", " 不相信人咬不到肚脐的，咬破肚脐去死如何？ ", " 人一生会遇到约万人，两个人相爱的概率是.。所以你不爱我，我不怪你。 ", " 不管看到什么样的过去，都请不要迷失自己，不管你变成什么样子，我都是你的同伴。 ", " 心，可是很重的。 ", " 我爱上的人，称我为怪叔叔 ", " 慕君之心，至死方休。 ", " 虚伪的眼泪，会伤害别人，虚伪的笑容，会伤害自己。 ", " 若隐若现才是艺术！ ", " 生我何用？不能欢笑。灭我何用？不减狂骄。 ", " 就是因为你不好，才要留在你身边，给你幸福。 ", " 呐，我们好像是，被宇宙和地球拆散的恋人似的。 ", " 你会梦游，我会磨牙，我们晚上一起去吓人吧！ ", " 或许只需一滴露水，便能守护这绽放的花朵。 ", " 自己永远是孤单的，但你可以让其他人变得不孤单。 ", " 和哥哥的便当比起来夜空的薯片就像大便一样！只会给我大便的大便夜空是笨蛋～笨蛋～ ", " 我手中的魔法，是守护挚爱的力量，是坚定这个信念所必须的力量，我一定会拯救你的，无论在何时、何地。 ", " 要改变别人的心真是件很难办的事，不过改变自己要容易一点。 ", " 风筝的线你随时可以放开，只是别盼望我会回来。 ", " 与你的生命等价的东西，这个世界上根本没有。 ", " 君子可寓意于物，但不可留意于物。 ", " 最好的感觉，是有人懂你的欲言又止。 ", " 看似美好的东西，往往藏着陷阱。 ", " 爱,其实很简单，困难的是去接受它。 ", " 喜欢大胸只是本能，喜欢贫乳才是审美。 ", " 二次元什么的我本来是不感冒的，直到我的膝盖中了一箭。 ", " 你才是⑨！你全家都是⑨！ ", " 努力是不会背叛自己的，虽然梦想有时会背叛自己。 ", " 面对就好，去经历就好。 ", " 我从小就害怕虫子 ", " 做不到的话，不过就是一死 。但是，赢了就能活下去，要是不战斗就赢不了。 ", " 既然认准这条路，何必去打听要走多久。 ", " 研表究明，汉字的序顺并不定一能影阅响读，比如当你看完这句话后，才发这现里的字全是都乱的。 ", " 少年心意，一如明月松间的青石流水，那些年里看到了，却不懂。 ", " 明明只是活着，哀伤却无处不在⋯⋯ ", " 少罗嗦，你还不如虫子呢！ ", " 天空是连着的，如果我们也能各自发光的话，无论距离有多远，都能看到彼此努力的身影。 ", " 别人恋爱不成功，你连暗恋都不成功！ ", ]; var randomIndex = Math.floor(Math.random() * yuluResponses.length); var randomResponse = yuluResponses[randomIndex]; a(c, randomResponse); }, }; 打开Handsome主题目录下的 component/comments.php文件,找到并删除如下内容:修改成如下代码:<textarea id="comment" class="textarea form-control OwO-textarea" name="text" rows="5" placeholder="<?php _me("说点什么吧……") ?>" οnkeydοwn="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"><?php $this->remember('text'); ?> 打卡 语录 时光机头像圆形打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/* 时光机圆形头像 */ .img-square {border-radius: 50%;} .list-group-item .thumb-sm .img-square {border-radius: 5px;} logo 扫光打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/* logo 扫光开始 */ .navbar-brand{position:relative;overflow:hidden;margin: 0px 0 0 0px;}.navbar-brand:before{content:""; position: absolute; left: -665px; top: -460px; width: 200px; height: 15px; background-color: rgba(255,255,255,.5); -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); -webkit-animation: searchLights 6s ease-in 0s infinite; -o-animation: searchLights 6s ease-in 0s infinite; animation: searchLights 6s ease-in 0s infinite;}@-moz-keyframes searchLights{50%{left: -100px; top: 0;} 65%{left: 120px; top: 100px;}}@keyframes searchLights{40%{left: -100px; top: 0;} 60%{left: 120px; top: 100px;} 80%{left: -100px; top: 0px;}} /*logo 扫光结束*/ 赞赏按钮跳动打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可/*赞赏按钮跳动开始*/ .btn-pay { animation: star 0.5s ease-in-out infinite alternate; } @keyframes star { from { transform: scale(1); } to { transform: scale(1.1); } } /*赞赏按钮跳动结束*/ 鼠标点击特效打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可/* 鼠标点击特效 */ var a_idx = 0; jQuery(document).ready(function ($) { $("body").click(function (e) { var a = [ "富强", "民主", "文明", "和谐", "自由", "平等", "公正", "法治", "爱国", "敬业", "诚信", "友善" ]; var $i = $("").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 9999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "#FA7298" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function () { $i.remove(); }); }); }); 复制版权提示打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可/* 复制成功提示代码开始 */ kaygb_copy(); function kaygb_copy() { $(document).ready(function () { $("body").bind('copy', function (e) { hellolayer(); }); }); var sitesurl = window.location.href; function hellolayer() { $.message({ message: "尊重原创，转载请注明出处！ 本文作者：XXX 原文链接：" + sitesurl, title: "复制成功", type: "warning", autoHide: false, time: "3000" }); } } /* 复制成功提示代码结束 */ 彩色标签云及右栏数字打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可/*彩色标签云代码开始*/ let tags = document.querySelectorAll("#tag_cloud-2 a"); let infos = document.querySelectorAll(".badge"); let colorArr = ["#428BCA", "#AEDCAE", "#ECA9A7", "#DA99FF", "#FFB380", "#D9B999"]; tags.forEach(tag => { tagsColor = colorArr[Math.floor(Math.random() * colorArr.length)]; tag.style.backgroundColor = tagsColor; }); infos.forEach(info => { infosColor = colorArr[Math.floor(Math.random() * colorArr.length)]; info.style.backgroundColor = infosColor; }); /*彩色标签云代码结束*/ 自定义右键打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部的HTML代码即可 首页 复制 搜索 前进 后退 重载网页 关于作者 响应时间和访客总数将以下代码放到/usr/themes/handsome/function.php的最下面/*访问总量代码开始*/ function theAllViews(){ $db = Typecho_Db::get(); $row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`'); echo number_format($row[0]['SUM(VIEWS)']); } /*访问总量代码结束*/ /*响应时间代码开始*/ function timer_start() { global $timestart; $mtime = explode( ' ', microtime() ); $timestart = $mtime[1] + $mtime[0]; return true; } timer_start(); function timer_stop( $display = 0, $precision = 3 ) { global $timestart, $timeend; $mtime = explode( ' ', microtime() ); $timeend = $mtime[1] + $mtime[0]; $timetotal = number_format( $timeend - $timestart, $precision ); $r = $timetotal < 1 ? $timetotal * 1000 . " ms" : $timetotal . " s"; if ( $display ) { echo $r; } return $r; } /*响应时间代码结束*/ 然后将以下代码放到/usr/themes/handsome/component/sidebar.php内，找到博客信息添加即可 <?php echo theAllViews();?><?php _me("访客总数") ?> <?php echo timer_stop();?><?php _me("响应耗时") ?> 全站字数统计 将以下代码放到/usr/themes/handsome/component/sidebar.php的开头 <?php //字数统计 function allOfCharacters() { $chars = 0; $db = Typecho_Db::get(); $select = $db ->select('text')->from('table.contents'); $rows = $db->fetchAll($select); foreach ($rows as $row) { $chars += mb_strlen(trim($row['text']), 'UTF-8'); } $unit = ''; if($chars >= 10000) { $chars /= 10000; $unit = '万'; } else if($chars >= 1000) { $chars /= 1000; $unit = '千'; } $out = sprintf('%.2lf %s',$chars, $unit); return $out; } ?> 然后将以下代码放到/usr/themes/handsome/component/sidebar.php内，加到合适的位置 <?php echo allOfCharacters(); ?><?php _me("全站字数") ?> 版权提示在主题文件post.php内，文章内容下方加上下面的代码 本文作者：<a href="<?php $this->author->permalink(); ?>" rel="author"> <?php $this->author(); ?> 文章标题：<a href="<?php $this->permalink() ?>"><?php $this->title() ?> 本文地址：<a href="<?php $this->permalink() ?>"><?php $this->permalink() ?> 版权说明：若无注明，本文皆<a href="<?php $this->options->rootUrl(); ?>" target="_blank" data-original-title="<?php $this->options->title() ?>"><?php $this->options->title() ?>原创，转载请保留文章出处。 时间流逝将以下代码加到/usr/themes/handsome/component/sidebar.php，在 119 行左右，放在<?phpendif; ?>之后 <?php _me("时间流逝") ?> 今日已经过去小时 这周已经过去天 本月已经过去天 今年已经过去个月 添加完成后,将以下代码放入后台-外观设置-开发者设置-自定义css/* 时间流逝 */ .sidebar-count .content { padding: 15px } .sidebar-count .content .item { margin-bottom: 15px } .sidebar-count .content .item:last-child { margin-bottom: 0 } .sidebar-count .content .item .title { font-size: 12px; color: var(--minor); margin-bottom: 5px; display: flex; align-items: center } .sidebar-count .content .item .title span { color: var(--theme); font-weight: 500; font-size: 14px; margin: 0 5px } .sidebar-count .content .item .progress { display: flex; align-items: center } .sidebar-count .content .item .progress .progress-bar { height: 10px; border-radius: 5px; overflow: hidden; background: var(--classC); width: 0; min-width: 0; flex: 1; margin-right: 5px } @keyframes progress { 0% { background-position: 0 0 } 100% { background-position: 30px 0 } } .sidebar-count .content .item .progress .progress-bar .progress-inner { width: 0; height: 100%; border-radius: 5px; transition: width 0.35s; -webkit-animation: progress 750ms linear infinite; animation: progress 750ms linear infinite } .sidebar-count .content .item .progress .progress-bar .progress-inner-1 { background: #bde6ff; background-image: linear-gradient(135deg, #50bfff 25%, transparent 25%, transparent 50%, #50bfff 50%, #50bfff 75%, transparent 75%, transparent 100%); background-size: 30px 30px } .sidebar-count .content .item .progress .progress-bar .progress-inner-2 { background: #ffd980; background-image: linear-gradient(135deg, #f7ba2a 25%, transparent 25%, transparent 50%, #f7ba2a 50%, #f7ba2a 75%, transparent 75%, transparent 100%); background-size: 30px 30px } .sidebar-count .content .item .progress .progress-bar .progress-inner-3 { background: #ffa9a9; background-image: linear-gradient(135deg, #ff4949 25%, transparent 25%, transparent 50%, #ff4949 50%, #ff4949 75%, transparent 75%, transparent 100%); background-size: 30px 30px } .sidebar-count .content .item .progress .progress-bar .progress-inner-4 { background: #67c23a; background-image: linear-gradient(135deg, #4f9e28 25%, transparent 25%, transparent 50%, #4f9e28 50%, #4f9e28 75%, transparent 75%, transparent 100%); background-size: 30px 30px } .sidebar-count .content .item .progress .progress-percentage { color: var(--info) } 添加完成后,在到/usr/themes/handsome/assets/js里面创建名为timeinfo.js后把下面代码复制进去保存 function init_life_time() { function getAsideLifeTime() { /* 当前时间戳 */ let nowDate = +new Date(); /* 今天开始时间戳 */ let todayStartDate = new Date(new Date().toLocaleDateString()).getTime(); /* 今天已经过去的时间 */ let todayPassHours = (nowDate - todayStartDate) / 1000 / 60 / 60; /* 今天已经过去的时间比 */ let todayPassHoursPercent = (todayPassHours / 24) * 100; $('#dayProgress .title span').html(parseInt(todayPassHours)); $('#dayProgress .progress .progress-inner').css('width', parseInt(todayPassHoursPercent) + '%'); $('#dayProgress .progress .progress-percentage').html(parseInt(todayPassHoursPercent) + '%'); /* 当前周几 */ let weeks = { 0: 7, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6 }; let weekDay = weeks[new Date().getDay()]; let weekDayPassPercent = (weekDay / 7) * 100; $('#weekProgress .title span').html(weekDay); $('#weekProgress .progress .progress-inner').css('width', parseInt(weekDayPassPercent) + '%'); $('#weekProgress .progress .progress-percentage').html(parseInt(weekDayPassPercent) + '%'); let year = new Date().getFullYear(); let date = new Date().getDate(); let month = new Date().getMonth() + 1; let monthAll = new Date(year, month, 0).getDate(); let monthPassPercent = (date / monthAll) * 100; $('#monthProgress .title span').html(date); $('#monthProgress .progress .progress-inner').css('width', parseInt(monthPassPercent) + '%'); $('#monthProgress .progress .progress-percentage').html(parseInt(monthPassPercent) + '%'); let yearPass = (month / 12) * 100; $('#yearProgress .title span').html(month); $('#yearProgress .progress .progress-inner').css('width', parseInt(yearPass) + '%'); $('#yearProgress .progress .progress-percentage').html(parseInt(yearPass) + '%'); } getAsideLifeTime(); setInterval(() => { getAsideLifeTime(); }, 1000); } init_life_time() 添加完成,将以下代码放入后台-外观设置-开发者设置-自定义输出body尾部 【已修稿】添加天气小组件（侧边栏）之前的心知天气版本 已失效 ，本版本由作者开发，灵感来源于Shanshui’s Blog，实现来自于Kimi K2.6大模型使用OpenMeteo天气API，支持自动定位（浏览器权限），反向查询来自 BigDataCloud 免费 API本版本无需任何公钥与私钥将以下代码放入/usr/themes/handsome/component/sidebar.php第 76 行左右<?php include __DIR__ . '/weather-widget.php'; ?> 随后在 /usr/themes/handsome/component/ 下，创建一个新文件文件名称:weather-widget.php文件中放入以下代码<?php /** * 天气小组件 v4 - 适配 Typecho Handsome 主题原生样式 * 去除城市切换下拉框，纯自动定位/默认城市 * 使用 Open-Meteo 免费 API + BigDataCloud 反向地理编码 * 作者:センク森辞 以及 Kimi * 灵感来源于 blog.shanshui.site * * 安装方法： * 1. 将本文件保存到 /usr/themes/handsome/component/weather-widget.php * 2. 在 /usr/themes/handsome/component/sidebar.php 中合适位置添加： * <?php include __DIR__ . '/weather-widget.php'; ?> * 3. 修改下方 $default_city 为你想默认显示的城市 */ // ==================== 配置区域 ==================== $default_city = '北京'; // 默认城市（当定位失败时显示） $cache_minutes = 10; // 缓存时间（分钟） // ================================================== ?> <?php _me("天气") ?> °C 如果你后续想换成和风天气或高德天气 API（需要你自己申请 Key），只需要替换 getCityCoords 和 getWeather 两个函数即可。总结通过以上美化方案，你可以让你的 Handsome 主题博客更加个性化和美观。这些功能都是经过精心挑选的，既实用又不会影响博客的加载速度。你可以根据自己的需求选择性地使用这些功能。如果你在使用过程中遇到任何问题，欢迎在评论区留言讨论。同时，也欢迎你分享自己的美化心得，让我们一起打造更好的博客！
0.开始这似乎是一个“不太正经”的测评，我将会从5个方面进行详细测评外观APP音质功能降噪1.外观部分外观欣赏图是的非常美观，当然这款机器提供了很多种配色，但是我情有独钟的还是月光白，因为这会非常方便的让我搭配衣服，即使是黑的（有点违和感），这个耳机的两个指示灯（如上图）可以让我们知道耳机状态是怎么样的，其实我觉得还可以（？）2.APP这款耳机是由倍思这款APP调校的，APP界面清爽，首页是进入则是耳机，右上角显示耳机电量不像某些厂商啊，开屏给你整个广告，摇一摇(来杯好茶摇一摇)（bushi，只能说，路边一*进入耳机控制页，也是非常清爽啊这个空间音效功能看起来很像是苹果的空间音效，但是似乎并没有空间感还有环绕音还可以其实，也不算特别牛吧还有EQ音效，什么倍思经典啊等，但是不能够跟空间音效同时使用就很。。。3.音质音质这一部分倍思baseus H1Pro有大佬用专业的设备做过与漫步者W820NB的对比，我就客观评价下吧倍思 H1 Pro 在 300 元档头戴降噪耳机里，硬件规格与客观指标达标、三频均衡偏流行、解析与分离度强、声场规整、失真低，但人声密度与低频质感略逊于同价位标杆，整体属同价位中上水平。一、核心硬件与客观指标（可量化）单元配置：每侧 40mm 全频动圈 + 10mm 独立高频动圈，共四单元，实现高低频物理分离。认证与解码：Hi-Res Wireless 金标（JAS）、支持 LHDC（最高 900kbps，24bit/96kHz），蓝牙 5.3。频响与失真：官方标称 20Hz–40kHz；第三方实测SNR=94dB、THD+N=0.03%@1kHz，远优于 Hi-Res 标准（THD<0.05%）。声压级：最大 105dB SPL（1kHz，THD≤1.0%）。二、三频客观表现（基于实测与盲听）低频（20–250Hz）量感：适中偏饱满，下潜到 40Hz 清晰可闻，无明显轰头。质感：弹性尚可、速度中等，瞬态一般、残响略长，大动态下略显松散。对比：与漫步者 W820NB 双金标版相当，低频降噪处理略优。中频（250Hz–2kHz）人声：位置靠前、清晰，女声更通透；男声偏薄、密度与厚度不足，听感略 “空”。乐器：吉他、钢琴还原自然，分离度好，不易被低频掩盖。短板：人声饱满度弱于 W820NB 双金标。高频（2kHz–40kHz）延伸：10mm 独立单元加持，高频延伸到 18kHz+，无明显毛刺、不破音。细节：弦乐、齿音、泛音保留充分，解析力在同价位突出。对比：高频纯净度略逊于 W820NB 双金标，但分离度更优。三、声场、解析与动态声场：横向规整、纵向一般，空间感中等；开启 WANOS 空间音效后，横向扩展明显、定位更准，适合影视 / 游戏。解析力：四单元 + LHDC 加持，细节还原强，复杂编曲下乐器层次清晰。动态：中等偏上，大动态（如交响乐、电子乐）控制力一般，瞬态响应普通。四、失真与底噪THD+N：0.03%@1kHz，失真极低，听感干净。底噪：SNR=94dB，安静环境下几乎无明显底噪。五、同价位横向对比（客观结论）优势：四单元物理分离、LHDC+Hi-Res、高频解析、分离度、失真控制、空间音效。劣势：人声密度、低频质感、动态瞬态、声场纵向深度弱于 W820NB 双金标。定位：300 元档均衡型偏流行，适合流行、人声、影视、游戏，不适合追求极致人声 / 低频的发烧友。4.功能机身上有4个按键一个Type-C口按键分别是ANC降噪按键，共三档可调电源键音量+与音量-键，手感舒适耳罩佩戴舒适，是仿真高蛋白皮革，回弹舒适缓慢，就是有点闷，不过可以接受。5.降噪部分倍思 H1 Pro 的降噪在 300 元档属第一梯队，-48dB 标称、实测约 - 34~-38dB、低频降噪强、高频一般、自适应 + 通透 / 偷听模式齐全，日常通勤 / 办公足够，仅复杂人声 / 尖锐噪音压制偏弱。一、核心参数与硬件（客观可量化）降噪类型：混合式 ANC（主动 + 被动）+ 四麦阵列（前馈 + 反馈双麦）官方标称：最大降噪深度 -48dB（主动 + 被动叠加，实验室理想值）第三方实测：低频（<500Hz）降噪约 -34~-38dB，接近标称；高频（>2kHz）约 -15~-20dB被动降噪：全包耳 + 加厚蛋白皮耳罩，物理隔音约 -18~-22dB，基础隔音扎实二、各频段降噪表现（实测场景化）低频降噪（最强项，<500Hz）效果：对地铁 / 公交 / 飞机引擎、空调外机、马路低频轰鸣压制极强，可消除85%+ 持续低频噪音对比：同价位优于漫步者 W820NB 双金标，低频降噪更干净、残响更少体感：通勤 / 飞行时，开启 ANC 后几乎听不到引擎轰鸣，仅留轻微震动感中频降噪（250Hz–2kHz，人声 / 日常噪音）效果：对办公室键盘、说话声、马路车流中高频压制中等，可降低60%~70%，但无法完全消除短板：近距离人声（如办公室同事说话）仍可听清，人声隔离一般高频降噪（>2kHz，尖锐噪音）效果：对尖锐高频（如电钻、鸣笛、金属碰撞）压制较弱，仅降低30%~50%，仍有明显感知对比：弱于 W820NB 双金标，高频残留更明显三、降噪模式与功能（实用度）自适应 ANC：自动识别环境噪音强度，动态调整降噪等级（安静 / 通勤 / 嘈杂三档），无需手动切换通透模式：放大环境音，走路 / 过马路安全，人声清晰、无明显失真偷听模式：定向拾取前方人声，适合短暂交流，比普通通透更聚焦通话降噪（ENC）：四麦波束成形，风噪 / 背景人声抑制强，户外通话清晰，同价位中上水平四、同价位横向对比表格，倍思H1Pro和漫步者 W820NB 双金标与西圣 H1 Pro（客观结论）对比项 倍思 H1 Pro 漫步者 W820NB 双金标 西圣 H1 Pro标称降噪 -48dB -43dB -45dB实测低频 -34~-38dB -32~-35dB -33~-36dB低频表现 ★★★★★ ★★★★☆ ★★★★☆中频人声 ★★★☆☆ ★★★★☆ ★★★☆☆高频尖锐 ★★☆☆☆ ★★★☆☆ ★★★☆☆自适应 有 有 无通透 / 偷听 齐全 通透 通透五、适用场景与短板最适合：地铁 / 公交 / 飞机、办公室空调 / 键盘、居家低频噪音、长途通勤不适合：需要完全隔绝人声的安静办公、高频尖锐噪音密集环境（如装修现场）短板：人声隔离一般、高频压制弱、大动态瞬态噪音（如突然鸣笛）抑制不足六、总结倍思 H1 Pro硬件规格高、实测降噪扎实、低频碾压同价位、功能齐全，300 元档降噪第一梯队；短板在高频与人声隔离，日常多场景足够，仅极端高频环境稍弱。结尾那么这期就到这里，我已经很久没这样好好写一次了，感谢支持！
转载自语痴博客-546对于本文的思考不知道多少年前，一场巨大的爆炸为我们带来了一大片虚无。时过境迁，这片虚无中诞生了各种物质，而最终也诞生了我们的文明。文明就像建立它的个体一样，也会害怕孤独。于是在一片虚无里慢慢壮大的人类文明，开始对周围的虚无展开思考，开始向四周寻找同伴。可是虚无毕竟是虚无，直到今天都并没有其他人能听到我们的呼喊，我们有时也会不禁怀疑自己是不是天地的独生子。而在一百多年前，随着技术的发展，我们制造出了具有执行能力的机器，按照我们的指示，替我们完成工作，栩栩如生。终于，我们当中的一些人还是耐不住了：如果找不到玩伴的话，我们自己制造一个会如何？从小说、影视作品、再到实践，终于在2023年有个疯狂的团队把它做了出来。它和以往的机器一样有着执行能力，只是它可以和我们闲聊解闷了。我们发现它不仅能聊天，而是和以往几乎所有地机器一样可以真正地服务于生产。我们发现它巧舌如簧，我们发现它知识渊博，我们还发现它甚至在某些方面比我们强得多。我们迅速地接纳了这样的新同伴，让它融入我们社会的每一处，无论这是否必要。很快，我们就能与之分摊需求，与此同时还有资源。我们似乎都忘了自己脚下只有一颗小球，小球上糊着或是嵌着的便是我们赖以生存的一切，而四周则尽是虚空。我们上万年来都在争夺这些资源，却在自己都顾不上的时候把我们的新朋友牵扯进来，把这些我们曾不惜动用武力去争抢的东西拱手相让。直到失业人口开始变卖他们个人电脑里已然变成的金条的存储部件时，我们才要开始思考一个问题：我们真的准备好迎接AI了吗？这篇文章若真的展示在“我们”全体的面前，必然会有争议的。我只是“我们”当中的不知多少亿分之一罢了，但我真的会“没资格评价这么宏大的事物”吗？不，我只是没资格让你们全部认同罢了。
好久没写了，今天写一篇看看配置发售时间:2017手机:Sony Xperia XZ1 Compact处理器soc:高通骁龙835运行内存:4gb内部存储:32gb系统:安卓15版本:Docomo日版正题这台手机我进行了优化，简单来说进行了刷机，是大佬编译的Evox，安卓15，刷完这个rom后占用是8.9g，这让本就不富裕的存储雪上加霜，所以我下了很多精简版软件，例如QQ=Tim啊这些，实际使用下来还算流畅，毕竟屏幕只有60hz，不强求了，这可是2017的手机啊，用上Type-C很强了，而且很小很小，就是放口袋有点搁大腿，不过还能接受。 最关键的是，他有外星科技3.5mm耳机口，并且这台手机还是Hi-Res双金标认证，这扯不扯你说，不过总的来说还是可以的事件但是前天晚上我把Xperia1ll（后面会单独讲一期）压在上面把屏幕压漏液了，于是花78购入拆机屏幕一块，今天刚到，准备明天去换上，就可以满血复活了！！结尾这台手机其实还是可以的，很适合小屏党（我），不过这台机子又涨价了，我是200多收的，现在大概是440左右（闲鱼），各位值得一试