Typecho 仿Github回复

2023-04-17 16:07:54 浏览数 (1)

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

图例:

GITHUB图例

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

图例:

TYPECHO图例

实现方法如下:

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

代码语言:javascript复制
   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函数 函数使用方法:

代码语言:javascript复制
    $parser = new HyperDown();
    $parser->makeHtml($text);

0 人点赞