Typecho评论者主页链接新窗口打开(非修改程序)
Typecho评论者主页链接默认是在当前页面跳转,感觉这一点不是很友好,网上有修改为新窗口跳转的教程,但都是通过修改Typecho程序文件实现的,这样的话,如果更新了程序(虽然TE更新极慢😑),就需要再次修改。最主要的是像我这种做了主题的,想要让每个我的主题用户都实现这个功能,难道要让每个用户都去改程序文件吗?当然是No!
网上找不到方法,就自己做喽,其实很简单,重写一下评论作者函数就OK了,重写后,自己想怎么改就怎么改😎(说是这样说,其实我只是添加了一个评论者主页如果是外链接,就在新窗口跳转而已,其余的都保持原生状态)。
下面就直接说一下怎么操作吧
修改方法
修改主题文件:functions.php
,在最后一行之前添加下面的代码
function CommentAuthor($obj, $autoLink = NULL, $noFollow = NULL) { //后两个参数是原生函数自带的,为了保持原生属性,我并没有删除,原版保留
$options = Helper::options();
$autoLink = $autoLink ? $autoLink : $options->commentsShowUrl; //原生参数,控制输出链接
$noFollow = $noFollow ? $noFollow : $options->commentsUrlNofollow; //原生参数,控制输出链接额外属性
if ($obj->url && $autoLink) {
echo '<a href="'.$obj->url.'"'.($noFollow ? ' rel="external nofollow"' : NULL).(strstr($obj->url, $options->index) == $obj->url ? NULL : ' target="_blank"').'>'.$obj->author.'</a>';
} else {
echo $obj->author;
}
}
然后修改主题评论框架,一般是comments.php
这个文件
将原来输出评论作者的函数,替换为新函数
原函数一般是<?php $comments->author(); ?>
改成<?php CommentAuthor($comments); ?>
即可
打完收功,在前台查看效果就行。
如果发现问题,欢迎反馈😁
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
为什么我的1.2没有$comments->author();这个。
测试
mark 有空试试!
不错。
我是在前端解析的,所以不管评论还是什么,只要是外链都是新标签打开。
前端也行,更省事了,但是这种问题我个人还是喜欢从后端解决他😂
说点儿啥~
谁不喜欢从后面呢
你的主题很棒,我很喜欢,哈哈。
谢谢你~
确实,似乎typecho不管是评论还是文章内的超链接,都是在本页打开的。不过评论这里的链接我是直接在主题的comments.php里重写了的,没有通过function.php也可以实现。算是另一种方法吧。
异曲同工😉