Puock主题修改备忘录

浏览:963次阅读
32 条评论

共计 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。

正文完
 0
评论(32 条评论)
S
2024-10-16 16:47:18 回复

左右键问题,可以加一行代码仅在评论框禁用。全站还是可用的。

if (keycode == 37 && x!=document.activeElement)

    2024-10-16 21:19:40 回复

    谢谢指导,根据你的代码,结合AI修改,现在勉强能用了。只是必须要弹出对话框,不然代码会失效。

      S
      2024-10-16 22:58:21 回复

      你代码share来看看

S
2024-10-16 16:48:18 回复

定义:var x = document.getElementById(‘comment’);

2024-10-16 17:00:56 回复

改成适合自己的很重要。

    2024-10-16 21:20:40 回复

    轻易也不敢修改。随着每次更新,以前修改的往往就失效了。

2024-10-16 21:30:12 回复

评论者URL加跳转一个是是为了防止有人通过刷留言换取外链权重(不过现代搜索引擎倒是不用太在乎这个),另一个其实是防止留言者的域名过期后被其他有害网站买走用了(或者他的网站被黑了),结果在搜索引擎和安全软件的眼里,站里这个直接链接URL就变成在引导用户访问有害站点了。在搜索引擎里被导致站点被搜索引擎警告,降权,甚至屏蔽、弹窗提醒危险网站。(如果是国内有备案的,甚至有可能会导致备案被撤销)所以尽量站内一切外链都加一个,站外链接跳转功能,隔离一下。

    2024-10-17 09:44:46 回复

    原来如此。
    看来还是有作用的,但这个功能有的时候也存在BUG,跳转不到目标页。所以我干脆取消了。
    对恶意的网址,只能手动删除了。

2024-10-17 09:26:00 回复

文章页 右边好空洞

2024-10-17 15:27:42 回复

话说,WordPress后台的评论回复功能,在输入框里按下ESC键就会折叠输入框,但是在CJK输入法的情况下就巨坑无比。
在网上也从来没人抱怨过,感觉有些神奇。

    2024-10-18 08:37:27 回复

    刚才试了下,果然有这个问题……

2024-10-17 22:54:45 回复

我感觉现在chatgpt强的可怕,
国内豆包也能用,但是感觉豆包知识不如gpt渊博,太多内容都是靠搜索引擎,太多都搜不出来,在瞎掰

    2024-10-18 08:38:05 回复

    我图简单就是用文心一言。如果需要质量高一点的,还得上chatgpt。

2024-10-21 12:49:58 回复

go的实现,一般是加了一个template_redirect的action钩子,找到那句add_action,注掉就完事了。

2024-10-21 17:56:17 回复

亲测点击右下角返回顶部箭头无效

    2024-10-22 08:27:30 回复

    谢谢何老师的反馈。
    不过我也只能摊手:完全没有这个技术能力来排查解决。

2024-10-22 09:50:14 回复

前端还不能点击回复,应该是某个JS没有加载成功或者你在修改js过程中不慎删除了其它代码

2024-10-28 22:56:44 回复

可以的!

2024-11-10 07:11:47 回复

有几个月没来了,看到你的新主题眼前一亮,真的不错。能根据自己需要修改主题都挺厉害的。主题越复杂越容易出问题,还有一些国产插件也容易导致被入侵或者出现问题(比如国产插件引入了bootcdn、staticfile这些静态资源库导致被投毒,我的一个友链前天晚上就中招了)。

    2024-11-11 08:44:02 回复

    我也不喜欢太花哨的功能,首先稳定,其次美观大方。能长期正常使用是非常重要的。

2024-11-12 18:59:30 回复

先点个赞,赞赞

2024-11-14 22:20:28 回复

大猫哥能折腾,厉害了!

    2024-11-20 17:41:00 回复

    没你能干。遇到改代码的事情我都很头疼。

2024-11-16 22:45:11 回复

这主题我也安装了 现在只喜欢极简的主题

    2024-11-20 17:41:12 回复

    简单点好,简单的不容易出错。

2024-11-17 16:12:31 回复

重新换主题 很多东西都要重新匹配 调试 太麻烦了