当前位置:首页 > CMS教程 > 其它CMS > 列表

Typecho实现评论无限嵌套显示实例

发布:smiling 来源: PHP粉丝网  添加日期:2014-12-06 15:19:33 浏览: 评论:0 

本文章来给大家介绍一下Typecho实现评论无限嵌套显示实例,希望此方法对各位同学会有所帮助,好吧,写下这个题目我就觉得好像又没什么可说的,所以我估计会写的很简略,谁叫我就是个懒胖子呢.

评论列表的输出,官方的是下面这个样子的,代码如下:

<?php $comments->listComments(); ?>

官方的输出在定义CSS的时候有点别扭,所以很多主题都用到了蚂蚱的那篇《自定义评论列表的样式》中的方法(蚂蚱是大神啊~~).

接下来的内容是基于蚂蚱的代码,嗯,废话了这么多,先上一下效果,就是下图这个样子的,第一次回复缩进,第二层之后便不再缩进,保持对齐.

Typecho实现评论无限嵌套显示实例

下面说实现方法,首先看蚂蚱原来的一段代码,代码如下:

  1. <?php function threadedComments($comments$options) { 
  2.     $commentClass = ''
  3.     if ($comments->authorId) { 
  4.         if ($comments->authorId == $comments->ownerId) { 
  5.             $commentClass .= ' comment-by-author';   
  6.         } else { 
  7.             $commentClass .= ' comment-by-user';   
  8.         } 
  9.     }  
  10.     $commentLevelClass = $comments->_levels > 0 ? ' comment-child' : ' comment-parent';   
  11. ?>    
  12. <?php } ?>   
  13.  
  14. <li id="li-<?php $comments->theId(); ?>" class="comment-body<?php  
  15. if ($comments->_levels > 0) { 
  16.     echo ' comment-child'
  17.     $comments->levelsAlt(' comment-level-odd'' comment-level-even');//开源软件:phpfensi.com 
  18. else { 
  19.     echo ' comment-parent'
  20. $comments->alt(' comment-odd'' comment-even'); 
  21. echo $commentClass;  
  22. ?>">  

这一段是判断评论 ID,父级评论还是子级评论以及判断评论 ID 的奇偶数什么的,其实就在子评论部分加一层深度的判断就可以了,修改后的代码如下:

  1. <?php function threadedComments($comments$options) { 
  2.     $commentClass = ''
  3.     if ($comments->authorId) { 
  4.         if ($comments->authorId == $comments->ownerId) { 
  5.             $commentClass .= ' comment-by-author';   
  6.         } else { 
  7.             $commentClass .= ' comment-by-user';   
  8.         } 
  9.     }  
  10.     $commentLevelClass = $comments->_levels > 0 ? ' comment-child' : ' comment-parent';   
  11.     $depth = $comments->levels +1; //添加的一句 
  12. ?>   
  13. <?php } ?>   
  14.  
  15. <li id="li-<?php $comments->theId(); ?>" class="comment-body<?php  
  16. if ( $depth > 1 && $depth < 3 ) {  //此处的判断要修改 
  17. echo ' comment-child'
  18. $comments->levelsAlt(' comment-level-odd'' comment-level-even'); 
  19. }  
  20. elseif ( $depth > 2 ) { 
  21. echo ' comment-child2'
  22. $comments->levelsAlt(' comment-level-odd'' comment-level-even'); 
  23. }  
  24. else { 
  25. echo ' comment-parent'
  26. $comments->alt(' comment-odd'' comment-even'); 
  27. echo $commentClass;  
  28. ?>"> 

其实就是一句话的事,就是加了个判断,子评论中是否深度超过了2,然后给一个不同的id来定义样式,我还假装像模像样的搞了篇文章出来,好吧,我就是个水货.

Tags: Typecho评论 Typecho无限嵌套

分享到: