修复一个 默认模版 评论表单 的小 bug(无法在前台正常回复其他评论)
独元殇 • 2022-12-18 17:25 • 683 次点击 • 帮助教程
emlog pro 更新到 1.9.0 后,default 模版引入了一个 bug。
表现
bug 的影响不大,就是在前台进行评论时,回复别人的内容,点击回复,回复完毕后页面跳转,会发现没有回复你想回复的那条评论,而是又新开了一条评论。
当然,一般情况下,在前台进行相互回复比较少见,很多时候是在后台在审核时连带回复了。当然这个 bug 也要解决。
原因
1.9.0 的评论区的评论条目的 id 变了,以前是 comment-2
、comment-14
这种,现在是直接成数字了,2
、14
,其目的是为了兼容 emlog 系统原来内置的 评论链接,比如访问 127.0.0.1/?post=2#24
就能自动跳转到这个文章页面的 id 为 24 的评论。
但,html 这里改了,common_tpl.js 可没跟着改,于是在点击「回复」按钮时,其动作函数无法获取到 id 号了。
解决方案
很简单,就是在后台的【系统】--【设置】--【基础设置】--【首页底部信息】 下面添加如下的代码。
当然,只有使用 default 模板才有效,其他模板请忽略这篇文章。
<script>
$(".com-reply").click(function () {
let $ele, getpid
$ele = $(this).parent().parent()
getpid = $ele.parent().attr("id")
// 一秒钟后,让 pid 等于要回复的评论
setTimeout(function(){$("#comment-pid").attr("value", getpid)}, 1000);
})
</script>
因为 common_tpl.js 会后于 上面这段代码运行,所以,上面那个改 value
的动作,是在 1 秒(也就是 1000 毫秒)以后才执行。
备注
系统修复这个 bug 很简单,就是把 common_tpl.js 里的 getpid = $ele.parent().attr("id").substring(8)
后面的 .substring(8)
去掉。
如果模板开发者要参考 default 时,请务必注意这一点。🤝
评论: