April 17
Typecho实现评论无限嵌套显示实例
本文章来给大家介绍一下Typecho实现评论无限嵌套显示实例,希望此方法对各位同学会有所帮助哦。
好吧,写下这个题目我就觉得好像又没什么可说的,所以我估计会写的很简略。。。谁叫我就是个懒胖子呢。。。
评论列表的输出,官方的是下面这个样子的
<?php $comments->listComments(); ?>
官方的输出在定义CSS的时候有点别扭,所以很多主题都用到了蚂蚱的那篇《自定义评论列表的样式》中的方法(蚂蚱是大神啊~~)
接下来的内容是基于蚂蚱的代码
嗯,废话了这么多,先上一下效果,就是下图这个样子的,第一次回复缩进,第二层之后便不再缩进,保持对齐
下面说实现方法
首先看蚂蚱原来的一段代码:
<?php function threadedComments($comments, $options) {
$commentClass = '';
if ($comments->authorId) {
if ($comments->authorId == $comments->ownerId) {
$commentClass .= ' comment-by-author';
} else {
$commentClass .= ' comment-by-user';
}
}
$commentLevelClass = $comments->_levels > 0 ? ' comment-child' : ' comment-parent';
?>
<?php } ?>
<li id="li-<?php $comments->theId(); ?>" class="comment-body<?php
if ($comments->_levels > 0) {
echo ' comment-child';
$comments->levelsAlt(' comment-level-odd', ' comment-level-even');
} else {
echo ' comment-parent';
}
$comments->alt(' comment-odd', ' comment-even');
echo $commentClass;
?>">
这一段是判断评论 ID,父级评论还是子级评论以及判断评论 ID 的奇偶数什么的,其实就在子评论部分加一层深度的判断就可以了
修改后的代码如下:
<?php function threadedComments($comments, $options) {
$commentClass = '';
if ($comments->authorId) {
if ($comments->authorId == $comments->ownerId) {
$commentClass .= ' comment-by-author';
} else {
$commentClass .= ' comment-by-user';
}
}
$commentLevelClass = $comments->_levels > 0 ? ' comment-child' : ' comment-parent';
$depth = $comments->levels +1; //添加的一句
?>
<?php } ?>
<li id="li-<?php $comments->theId(); ?>" class="comment-body<?php
if ( $depth > 1 && $depth < 3 ) { //此处的判断要修改
echo ' comment-child';
$comments->levelsAlt(' comment-level-odd', ' comment-level-even');
}
elseif ( $depth > 2 ) {
echo ' comment-child2';
$comments->levelsAlt(' comment-level-odd', ' comment-level-even');
}
else {
echo ' comment-parent';
}
$comments->alt(' comment-odd', ' comment-even');
echo $commentClass;
?>">
其实就是一句话的事,就是加了个判断,子评论中是否深度超过了2,然后给一个不同的id来定义样式,我还假装像模像样的搞了篇文章出来,好吧,我就是个水货。。。。。
作者:http://www.php230.com/1412550961.html
:D 少女祈祷中...