用过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);
版权属于:Kiosr
本文链接:https://blog.zezeshe.com/archives/typecho-replies-by-imitating-github.html
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!