好的爱情是你通过一个人看到整个世界,坏的爱情是你为了一个人舍弃世界。

改造Drupal系统评论的显示

技术文档 92451浏览 0评论

第一个是评论背景用斑马色区分开,也就是单数评论用一个颜色,双数评论用另外一个颜色。这个是 Drupal自带支持的,不光是评论,其它table, block等都已经有了自动生成的$zebra CSS类。在comment.tpl.php里面一开头就有print $zebra这一句,就是给单复数评论制定不同的odd even class。所以我们要做的无非是用直接定义CSS:
#comments .odd{
  background-color: #f8f8f8;
}

第二个就是希望作者自己的回复能够用特别的颜色单独标出。对个人blog来说这比较容易,因为作者有固定的uid,直接在comment.tpl.php里面在第一行的最后?>">前面加上下面这段代码就行了。这样就会给所有uid为1的用户评论加上selfcomment这个class。
<?php
print (uid==1) ? ' selfcomment' : '';
?>
如果是多人blog,稍微有点麻烦,需要判断当前comment是否与node为同一个uid,而在comment.tpl.php里面并没有$node这个变量。所以需要先修改template.php把$node传过来,或者也可以在template.php里面直接把所有逻辑判断都完成,直接传过来一个最终结果。这里我选择的传递$node变量,然后在comment.tpl.php里面作逻辑判断。没有别的原因,只是传递$node变量过来比较通用,说不定以后还可以派上别的用场。
   1. 先修改template.php,在function _phptemplate_variables函数下面,return $vars;之前,加入:
      <?php
        if ($hook == 'comment') {
          if ((arg(0) == 'node') && is_numeric(arg(1))) {
            $vars['node'] = node_load(arg(1));
          }
        }
      ?>
   2. 然后修改comment.tpl.php,在一开始的print ' '. $zebra; 之后加上:
      <?php
      print ($comment->uid == $node->uid) ? ' selfcomment' : '';
      ?>
   3. 最后就是CSS了:
      #comments .selfcomment{
        background-color: #eeffee;
      }

效果可参见本站留言本或者其他有评论的文章~

摘自:http://www.verydummy.com/blog/node/112

转载请注明:自由的风 » 改造Drupal系统评论的显示

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea:

    全文请2012-07-20 17:44 回复
    • 回复评论可以在评论的下方吗

      32的2014-03-30 22:33 回复