评论模块个性化 - typecho折腾小记三(12.27)


老早就想研究下这部份,一直拖到现在。 主题设计时,评论模块希望设计得独特,富有个性,就需要修改评论结构,而 typecho 默认模板中提供给我们的只有一行简单代码:

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

把结构都写死了。当然,其实官方的博客中有一篇文章已经声明可以自定义评论结构,只是不太详细,有点摸不着头脑~

于是今天抽空折腾了下,总的来说是 在 comments.php 开头部份加入如下方法即可实现自定义。

<?php function threadedComments($comments, $singleCommentOptions) {
    
	$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';
?>
<li id="<?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;
 //以上部份 不用理会,是判断一些奇偶数评论和作者类的,下面的才是需要修改的,根据需要修改吧, php部份不需要 修改,只需要修改 HTML 部分,下面是我现在用的
?>">
    <div class="comment-author">
        <?php $comments->gravatar($singleCommentOptions->avatarSize, $singleCommentOptions->defaultAvatar);    //头像 只输出 img 没有其它标签 ?>
        <div class="comment-info">
            <cite class="fn"><?php $singleCommentOptions->beforeAuthor();
                $comments->author();$singleCommentOptions->afterAuthor(); //输出评论者 ?>
            </cite>
            <em class="comment-meta">
                <a href="<?php $comments->permalink(); ?>"><?php $singleCommentOptions->beforeDate();
                $comments->date($singleCommentOptions->dateFormat);
                $singleCommentOptions->afterDate();  //输出评论日期 ?></a>
            </em>
        </div>
        <div class="comment-reply">
        	<?php $comments->reply($singleCommentOptions->replyWord); //输出 回复 链接?>
   	</div>
    </div>
    
    <?php $comments->content(); //输出评论内容,包含 <p></p> 标签 ?>
    <?php if ($comments->children) { ?>
    <div class="comment-children">
        <?php $comments->threadedComments($singleCommentOptions); //评论嵌套?>
    </div>
    <?php } ?>
    
</li>
<?php
}
?>

下面是我所用的CSS,这就不需要注释了吧~

.comment-list{margin:0;list-style:none; padding: 5px 0}
ol.comment-list li{ margin: 10px 0;padding: 10px 10px 5px;border:1px solid #e3e3e3;background-color:#FAFAFA;-moz-border-radius:5px; -webkit-border-radius:5px;}
ol.comment-list li.comment-odd{background-color: #F4F9FF; border-color: #D0DDF6; }
ol.comment-list li.comment-even{background-color:#fff; border-color: #E3E3E3;}
ol.comment-list li.comment-by-author{border-color: #b8cdf6;}
ol.comment-list li.comment-by-user {}
ol.comment-list li .comment-reply{float: right; margin-top: -3px;}
ol.comment-list li .comment-reply a{font-size:12px;border:none;color:#aaa;}
ol.comment-list li .comment-reply a:hover{color:#444;}
.comment-body{overflow:hidden;}
.comment-body p{ margin: 5px 0}
.comment-author{border-bottom: 1px solid #ECECEC;height: 36px;padding-bottom: 5px;width: 100%;}
ol.comment-list li.comment-odd .comment-author { border-bottom-color:#D0DDF6}
.avatar{float:left;border:1px solid #E3E3E3; padding: 2px; background-color: #fff;}
.comment-info {color: #888;float: left;line-height: 16px;padding-left: 5px;} 
.comment-info .fn{font-style:normal; display: block; margin-top: 4px}
.comment-info .comment-meta{color:#999;font-size:10px;}

已有 16 位潜水的同学浮出水面了 »

  1. 这个原来是这样啊

    2012-01-10 11:41 回复
  2. 恩,知道就是这样可是没有细究

    2012-01-10 11:40 回复
  3. 昨天也折腾了这里默认的是在var\Widget\Comments下的。把那个函数重写了就可以了。

    2011-11-16 12:29 回复
  4. 是的,正确的。

    2011-09-03 04:22 回复
  5. Byends,网上好
    1、刚才提交了个留言发现你的评论功能很棒,查到这篇文章,在comments.php 开头部份加入相关内容后发现评论区打不开了。会不会是要默认主题才有效? 有空的话给个回复吧,麻烦了。

    2、评论提交有点慢,还以为是卡住了。不过,可能是网速问题。

    2011-06-20 22:59 回复
    1. 网上好~
      1、跟主题没有直接关系,因为是php代码,你看看php 代码是滞正常结束了?
      2、评论慢不是网速的原因,是在发邮件,有时间再改写发邮件代码吧,确实很影响速度
      PS:你看到 好看可能是因为用了JQuery的缘故,那是一个插件,叫做ajaxcomment,你到官方论坛去找吧,还有其它问题就发邮件给我吧,邮箱地址在 关于 页面有。

      2011-06-21 00:25
  6. 我发现这样以后我的页面就不显示了?

    2011-06-20 10:22 回复
    1. 具体问题发邮件给我好吧。

      2011-06-21 00:26
  7. 不错的程序。

    2011-05-22 17:18 回复
  8. 评论个性化,我喜欢这点。

    2011-05-18 17:45 回复
  9. 你现在用的是typecho程序?

    2011-04-04 20:50 回复
    1. 是的

      2011-06-21 00:27
  10. 呵呵 我一直想找以前版本的 主题 观摩的~ 可是 都很难找呀。。

    2011-03-21 21:36 回复
    1. 什么版本呢?

      2011-06-21 00:27
  11. 额,你才知道评论列表可以自定义啊??

    2011-02-26 05:25 回复
    1. 以前就知道,只是一直没去研究,呵呵

      2011-02-26 11:09

添加新评论 »