sep.cc 如涉及侵权内容,请联系 [email protected]

Typecho默认主题站长认证以及评论访客UA获取方法

20190929211154.png

最近发现很多typecho站点的评论上都弄了一个显示评论人的系统、浏览器以及站长认证装逼信息,所以今天就顺便折腾一下,利用插件的形式实现typecho评论显示访客UA信息以及站长认证。

typecho评论显示访客UA信息和站长认证,有两种方法,都是利用插件来实现,不过两种方法钩子代码放的地方不一样而已,一个是修改Typecho本身源码,一个是修改默认主题comments.php文件,就看你喜欢哪个方法了。

typecho本身就具有UA抓取,网上也给了这段代码:

<?php echo $comments->agent; ?>

第一步先下载插件,再上传至plugins目录设置插件参数并启用插件。

下载地址:https://github.com/ennnnny/typecho

方法一:

但是我发现默认主题的评论框架是高度集成的,根本插入不进评论里面,只能插进外面,翻阅了typecho官方主题开发自定义评论列表区域文档,将其修改之后即可使用。

自定义评论列表区域:

<?php function threadedComments($comments, $options) {
    $commentClass = '';
    if ($comments->authorId) {
        if ($comments->authorId == $comments->ownerId) {
            $commentClass .= ' comment-by-author';
        } else {
            $commentClass .= ' comment-by-user';
        }
    }
 
    $commentLevelClass = $comments->levels > 0 ? ' comment-child' : ' comment-parent';
?>
 
<li id="li-<?php $comments->theId(); ?>" class="comment-body<?php 
if ($comments->levels > 0) {
    echo ' comment-child';
    $comments->levelsAlt(' comment-level-odd', ' comment-level-even');
} else {
    echo ' comment-parent';
}
$comments->alt(' comment-odd', ' comment-even');
echo $commentClass;
?>">
    <div id="<?php $comments->theId(); ?>">
        <div class="comment-author">
            <?php $comments->gravatar('40', ''); ?>
            <cite class="fn"><?php $comments->author(); ?>&nbsp;<?php CommentApprove_Plugin::identify($comments->mail);?><?php UserAgent_Plugin::render($comments->agent);?></cite>
        </div>
        <div class="comment-meta">
            <a href="<?php $comments->permalink(); ?>"><?php $comments->date('Y-m-d H:i'); ?></a>
            <span class="comment-reply"><?php $comments->reply(); ?></span>
        </div>
        <?php $comments->content(); ?>
    </div>
<?php if ($comments->children) { ?>
    <div class="comment-children">
        <?php $comments->threadedComments($options); ?>
    </div>
<?php } ?>
</li>
<?php } ?>

复制以上代码添加到主题comments.php文件开头,此代码我已添加站长认证以及评论UA信息(代码在<?php $comments->author(); ?>后面),如只需要站长认证或者只需要UA浏览器信息,可自行保留或删除。

UA代码:

<?php UserAgent_Plugin::render($comments->agent);?>

站长认证代码:

<?php CommentApprove_Plugin::identify($comments->mail);?>

方法二:

修改typecho源代码,var/widget/comments/archives.php的第121行左右。

在$singleCommentOptions->afterAuthor(); ?>后面添加你想实现功能的代码:

UA代码:

<?php UserAgent_Plugin::render($this->agent);?>

站长认证代码:

<?php CommentApprove_Plugin::identify($this->mail);?>

此两种方法仅在官方默认主题下测试成功,其他主题请联系原作者进行修改。

最后编辑:2021年9月07日 00:12:00「本站部分内容具有时效性,如遇失效请留言反馈」

转载声明:本站所有内容采用 CC BY-NC-SA 国际许可协议,转载请注明来源:Sep blog,谢谢!

版权声明:如文章内容涉及侵权,请联系 [email protected],待查证属实之后会立刻删除侵权内容。