Typecho增加显示评论用户网址Url功能
温馨提示:
最后更新时间2021-05-17 10:14:57,若内容或图片失效,请留言反馈!
今天看到 秦大叔 在博客上说是换新主题了,但用户提交的网址不显示。
我随后在本地安装了 Typecho 的程序,发现这程序的后台简洁得不一样,和它的前台一样简洁,也没有在后台可以设置显示网址啥的,那就干脆撸代码吧。
看Typecho的数据库,应该是支持用户评论提交网址的,有这个字段。
类为秦大叔用的是别人的主题,这款主题还挺漂亮的。
下面说下怎么修改:
一、前台修改
打开模板文件夹下的 \usr\themes\Joe-master\public\comment.php 文件:
在用户提交信息的任意位置增加一行网址表单:
<\div class="list"><\input type="text" value="{C}user->hasLogin() ? $this->user->url() : $this->remember('url') ?>" autocomplete="off" name="url" placeholder="请输网址..." /><\/div>
上面代码为了防止解析成 Html,我这里加了反斜杠。
二、修改前端提交js文件
打开 \Joe-master\assets\js\joe.global.js 文件,按下图说明修改。
说明:
第1行,将原来的 url 替换一个新词,这个主题作者把 url 用来作 Ajax 的提交地址了,导致下面要用数据库字段 url 就不好用了。
第2行,新增加一行,获取表单信息的,因为上面改了 url 变量,这里就可以直接用了,代码:
const url = $(".joe_comment__respond-form .head input[name='url']").val();
第3行:把Ajax提交址修改为上面我们定义的变量地址。
第4行:增加 url 变量。
上面修改了 joe.global.js 文件,如果博客引用的是 joe.global.min.js 文件,记得修改 usr\themes\Joe-master\public\include.php 文件中的引用js文件名称,当然上面的修改,可以直接压缩替换 min 文件。
下面说显示网址的,我发现 Typecho 默认也是不显示网址的。
三、修改后端文件
打开 \var\Widget\Abstract\Comments.php 文件,找到作者输出函数:
function author($autoLink = NULL, $noFollow = NULL)
e c h o '<\a target="_blank" href="' , $this->url , '"' , ($noFollow ? ' rel="external nofollow"' : NULL) , '>' , $this->author , '<\/a>';
直接把后面一个判断修改了,这就所有用户显示网址了。
最终效果:
2021.5.18更新
1、无论开发版还是正式版,都不需要修改 var\Widget\Abstract\Comments.php 文件。
2、主题作者更新主题,是把原来加和的验证方式,更新为4位数验证码,但表单提交流程是一样的。
参考地址:
1、https://notemi.cn/add-a-blogger-and-a-friend-to-your-comments.html