在本地安装了 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>';
直接把后面一个判断修改了,这就所有用户显示网址了。
最终效果:
THE END
喜欢就支持一下吧