用过Github评论的都知道,回复会顺带主评论内容,这样相较于博客的@某某用户、或回复某某用户要直观许多,不需要上下文联系.
图例:
GITHUB图例
其实Typecho也可以实现这样的效果,深入研究也可达到多层嵌套的效果.
图例:
TYPECHO图例
实现方法如下:
在主题的Function.php
中加入如下,之后,在主题评论列表回复处增加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);