啊,这个博主终于更新了
也是托更了很久了吧。之前在群里看到了 Typecho 仿 Github 回复 ,看到方案之后感觉还不错。然后我就奇思妙想的问了一下作者能不能有什么方法把 Typecho 的嵌套模式取消,新评论永远在最上面,没想到他真的给方案了...删掉下面选中的内容即可
QQ图片20191011192416.jpg

拖了很久之后,终于有机会改了。为了不影响 Typecho 以后的更新,我选择了不动 Typecho 的内核文件,直接在 comments.php 里再重新实现一次,就能达到等同的效果。就直接把内核里的 Archive.php 复制一份出来,在 comments.php 里引用即可。当然,在 functions.php 里引用也能做到相同效果。

操作

在上文 Typecho 仿 Github 回复 里的方案按照文章照做一遍,然后改内核或者是在主题里引用一份被处理的内核里的 Archive.php 即可。

问题

发现问题肯定是正常的事情喽。在开启评论审核的情况下进行评论,Typecho 仿 Github 回复 的方案会报错。现贴出修复版(简单修复,不报错就行😂)

function getCommentHF($coid){
    $parser = new HyperDown(); //Typecho内置函数 将md转为html
    $db   = Typecho_Db::get();
    $prow = $db->fetchRow($db->select('parent')
        ->from('table.comments')
        ->where('coid = ? AND status = ?', $coid, 'approved'));
    if (isset($prow['parent'])){
        //origin start
        $parent = $prow['parent'];
        if ($parent != "0") {
            $arow = $db->fetchRow($db->select('text','author','status')
                ->from('table.comments')
                ->where('coid = ?', $parent));
            $text = $arow['text'];
            $author = $arow['author'];
            $status = $arow['status'];
            if($author){
                if($status=='approved'){
                    $href   = '<blockquote><a class="comment_a_link_fixer" href="#comment-' . $parent . '">@'.$author.'</a><br>'.$parser->makeHtml($text).'</blockquote>';;
                }else if($status=='waiting'){
                    $href   = '<a>评论审核中···</a>';
                }
            }
            echo $href;
        } else {
            echo "";
        }
        //origin end
    }
}

然后就差不多可行了。效果如本博评论区,效果不是一般的爽。Ajax 评论回复都能省很多事情。

感谢

@Kiosr

相关标签:typecho 评论系统

许可协议:© 署名-相同方式共享 4.0 国际 转载请保留原文链接及作者