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); ?>即可

打完收功,在前台查看效果就行。

如果发现问题,欢迎反馈😁