«

修复一个 默认模版 评论表单 的小 bug(无法在前台正常回复其他评论)

独元殇 • 2022-12-18 17:25 • 792 次点击 •


emlog pro 更新到 1.9.0 后,default 模版引入了一个 bug。

表现

bug 的影响不大,就是在前台进行评论时,回复别人的内容,点击回复,回复完毕后页面跳转,会发现没有回复你想回复的那条评论,而是又新开了一条评论。

当然,一般情况下,在前台进行相互回复比较少见,很多时候是在后台在审核时连带回复了。当然这个 bug 也要解决。

原因

1.9.0 的评论区的评论条目的 id 变了,以前是 comment-2comment-14 这种,现在是直接成数字了,214,其目的是为了兼容 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 时,请务必注意这一点。🤝

bug 修复记录 帮助教程

评论:
avatar
那多记忆 管理员2022-12-18 20:42
👍🏻 感谢反馈,整理的非常棒。 看完世界杯决赛, 我再仔细看下。
commentator
独元殇 管理员2022-12-18 22:05
@那多记忆:这个其实不是反馈,是发现新版本又引入了一个 bug,然后暂时的一个解决方案。