共计 2583 个字符,预计需要花费 7 分钟才能阅读完成。
作为一个写博十余年的老博主,实在是没有精力折腾各种新东西。但近期博客程序被入侵事件让我不得不换掉了使用很久的Flat主题。
本来想在后台随便找个官方推荐的主题凑合用,但那些主题基本上都是歪果人设计的,对中文排版支持不太友好,所以又重新找了款国人开发的主题,也就是本站正在用的——Puock主题。
这款主题美观大方,功能强大,一次性解决了我很多痛点。可以说是立即部署、立即使用。
但使用了几天后,还是发现有需要调整的地方。现在记录一下,免得后面忘记了。
一、评论者URL跳转问题
主题模板设计的功能是:评论者如果留了URL的,则进行base64加密,然后通过一个中转页面进行二次确认,再进行跳转。
我对这个功能的态度是:完全不需要。
博友互访留下URL,并且清晰地展示在前台,我认为是非常重要的,加密再跳转极其影响用户体验。对于那些发广告的评论,我是一律删除就完事了,所以并没有这个需求。关键是,经过测试,部分URL加密后无法正常跳转,而是会跳到我博客首页,这完全让人摸不着头脑。
由于本人对代码几乎一窍不通,看了半天也没找到哪里能关掉这个功能。
开始把go.php里的代码丢给“文心一言”去分析,并根据AI指引修改里面的代码,试图取消加密,直接调转,但无果。
之后采取笨方法,直接用全文搜索,搜出了包含“go.php”这个关键词的页面opt.php,路径位于:
主题模板文件夹下的 /inc/fun/opt.php
相关代码为:
//跳转链接 function pk_go_link($url, $name = ”) {if (pk_is_cur_site($url)) { return $url; }$url = PUOCK_ABS_URI . ‘/inc/go.php?to=’ . base64_encode($url); if (!empty($name)) { $url .= ‘&name=’ . base64_encode($name); }return $url; }
这段代码丢给AI,让他改为不加密,但AI弄了半天,不成功。
我看了下代码,还是采用最笨的方法,将$url =后面的内容改为了$url,也就是左右相等,替换后如下:
//跳转链接 function pk_go_link($url, $name = ”) {if (pk_is_cur_site($url)) { return $url; }$url = $url; if (!empty($name)) { $url .= ‘&name=’ . base64_encode($name); }return $url; }
再次刷新运行,完美解决。
二、屏蔽键盘左右键翻页功能
这个问题是博友S发现的。
在单篇文章页面,使用键盘左右键可以实现上一篇、下一篇的快速切换。
看起来很美好,但这里有个“致命”BUG,当浏览者在评论框里输入文字时,不小心使用了键盘左右键来调整内容,此时页面会马上切换到上一篇或下一篇,直接导致整个评论表单输入的内容全部丢失。
当我打算去官方开发者博客留言反馈这个问题时,结果光是写那条留言就反复写了五六次——官方竟然复刻了这个问题,也就是说跟我博客运行环境是没有关系的。
在等待官方修复这个BUG之前,我尝试自救。
跟文心一言沟通多次,并没有给出有效的解决办法。
无奈之下,找到了chatgpt,让他给我写一个屏蔽键盘左右键的插件,修改一次后,解决问题。
现在,我的博客将暂时屏蔽键盘左右键,按下时会弹出对话框,虽然也有一定影响,但总比吞掉辛辛苦苦敲下的文字强吧。
10.18更新:
在GitHub提交issue后,网友hausen1012回复说遇到同样问题,并给出了相关的代码。
经测试,删除主题模板下/assets/dist/js路径中puock.min.js文件以下代码即可取消左右键翻页功能:
{
key: "keyUpHandle",
value: function() {
var a = $(".single-next-or-pre");
a && (window.onkeyup = function(t) {
var e = null;
switch (t.key) {
case "ArrowLeft":
e = a.find("a[rel='prev']").attr("href");
break;
case "ArrowRight":
e = a.find("a[rel='next']").attr("href")
}
e && (window.location = e)
}
)
}
}
10.22更新:
感谢博友老何提醒,由于直接删除上述代码,会导致评论回复功能不可用(我猜是keyUpHandle这个功能还关联了其他事件)
忍不住又折腾了一下,经过chatgpt的分析,把上述代码修改为下面的代码:
{
key: "keyUpHandle",
value: function() {
var a = $(".single-next-or-pre");
var commentBox = $("#comment"); // 获取评论框
// 定义事件处理函数
var handleKeyUp = function(t) {
var e = null;
switch (t.key) {
case “ArrowLeft”:
e = a.find(“a[rel=’prev’]”).attr(“href”);
break;
case “ArrowRight”:
e = a.find(“a[rel=’next’]”).attr(“href”);
}
e && (window.location = e);
};
// 绑定事件
if (a.length) {
window.addEventListener(“keyup”, handleKeyUp);
}
// 解绑事件的函数
this.unbindKeyUp = function() {
window.removeEventListener(“keyup”, handleKeyUp);
};
// 监测评论框的焦点事件
commentBox.on(“focus”, () => {
this.unbindKeyUp(); // 当焦点在评论框上时,解绑键盘事件
});
// 可选:在评论框失去焦点时重新绑定事件
commentBox.on(“blur”, () => {
if (a.length) {
window.addEventListener(“keyup”, handleKeyUp); // 重新绑定事件
}
});
}
}
希望不会再衍生出新的BUG。
左右键问题,可以加一行代码仅在评论框禁用。全站还是可用的。
if (keycode == 37 && x!=document.activeElement)
谢谢指导,根据你的代码,结合AI修改,现在勉强能用了。只是必须要弹出对话框,不然代码会失效。
你代码share来看看
定义:var x = document.getElementById(‘comment’);
改成适合自己的很重要。
轻易也不敢修改。随着每次更新,以前修改的往往就失效了。
评论者URL加跳转一个是是为了防止有人通过刷留言换取外链权重(不过现代搜索引擎倒是不用太在乎这个),另一个其实是防止留言者的域名过期后被其他有害网站买走用了(或者他的网站被黑了),结果在搜索引擎和安全软件的眼里,站里这个直接链接URL就变成在引导用户访问有害站点了。在搜索引擎里被导致站点被搜索引擎警告,降权,甚至屏蔽、弹窗提醒危险网站。(如果是国内有备案的,甚至有可能会导致备案被撤销)所以尽量站内一切外链都加一个,站外链接跳转功能,隔离一下。
原来如此。
看来还是有作用的,但这个功能有的时候也存在BUG,跳转不到目标页。所以我干脆取消了。
对恶意的网址,只能手动删除了。
文章页 右边好空洞
谢谢反馈,我马上修改。
话说,WordPress后台的评论回复功能,在输入框里按下ESC键就会折叠输入框,但是在CJK输入法的情况下就巨坑无比。
在网上也从来没人抱怨过,感觉有些神奇。
刚才试了下,果然有这个问题……
我感觉现在chatgpt强的可怕,
国内豆包也能用,但是感觉豆包知识不如gpt渊博,太多内容都是靠搜索引擎,太多都搜不出来,在瞎掰
我图简单就是用文心一言。如果需要质量高一点的,还得上chatgpt。
go的实现,一般是加了一个template_redirect的action钩子,找到那句add_action,注掉就完事了。
谢谢支招。已解决。
亲测点击右下角返回顶部箭头无效
谢谢何老师的反馈。
不过我也只能摊手:完全没有这个技术能力来排查解决。
前端还不能点击回复,应该是某个JS没有加载成功或者你在修改js过程中不慎删除了其它代码
已解决,谢谢反馈。
好了,真棒
可以的!
有几个月没来了,看到你的新主题眼前一亮,真的不错。能根据自己需要修改主题都挺厉害的。主题越复杂越容易出问题,还有一些国产插件也容易导致被入侵或者出现问题(比如国产插件引入了bootcdn、staticfile这些静态资源库导致被投毒,我的一个友链前天晚上就中招了)。
我也不喜欢太花哨的功能,首先稳定,其次美观大方。能长期正常使用是非常重要的。
先点个赞,赞赞
谢谢!
大猫哥能折腾,厉害了!
没你能干。遇到改代码的事情我都很头疼。
我肝不动了,现在电脑上只有游戏和WPS了。
这主题我也安装了 现在只喜欢极简的主题
简单点好,简单的不容易出错。
重新换主题 很多东西都要重新匹配 调试 太麻烦了
是的,最好是不要换主题。
倦怠阴天
日志归档