Typecho 仿Github回复

Typecho教程 tyepcho回复嵌套 typecho仿github 2019-09-14

用过Github评论的都知道,回复会顺带主评论内容,这样相较于博客的@某某用户、或回复某某用户要直观许多,不需要上下文联系.

图例:
GITHUB图例

其实Typecho也可以实现这样的效果,深入研究也可达到多层嵌套的效果.

图例:
TYPECHO图例

实现方法如下:

在主题的Function.php中加入如下,之后,在主题评论列表回复处增加<?php getCommentHF($comments->coid)?>,即可实现

    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'));
        $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="at" uid="'.$parent.'" onclick="scrollt(\'comment-'.$parent.'\'); return false;">@'.$author.'</a><br>'.$parser->makeHtml($text).'</blockquote>';;
                }else if($status=='waiting'){
                    $href   = '<a>评论审核中···</a>';
                }
            }
            echo $href;
        } else {
            echo "";
        }
    }

拓展:HyperDown() 是typecho的内置MD解析为html函数
函数使用方法:

    $parser = new HyperDown();
    $parser->makeHtml($text);

5条评论

    尚寂新

    对了。这玩意弄完之后的评论显示顺序...是子评论永远新评论在最上面还是永远在父级评论的下面...

    用户 安卓派 90 天前回复

    尚寂新

    我去 厉害了我的泽 等有机会就去应用一下
    话说你这边用了吗qwq

    用户 安卓派 91 天前回复

      泽泽社长
      @尚寂新

      这篇文章是Kiosr写的

      用户 MacOS 91 天前回复

    保罗

    我觉得这样搞蛮鸡肋的,如你截图所示,一个评论出现了两次,看着重复。不如 Flarum 那种在 @ 上做文章的方式更好,我主题也有相关的应用方式

    游客 Windows10 91 天前回复

      Kiosr
      @保罗

      确实看着重复挺难受的,我也重写了评论输出,去掉了子评论层级,然后就舒服一些了,单纯的@如果一层内回复过多,就会看着很晕,看不太出到底回复的哪一条,所以我才做了这此方法

      作者 MacOS 89 天前回复

智能推荐