宅事

记录闲时弄的小东西

Habari虽然有recentcomments和freshcomments这两个显示最近的评论的插件,但我试了下,运气差了些,没一个能用起来,所以只能自己动手了,看到miklb和我用一样的模板,他右边sidebar的Recent Comments做的真不错,和主题风格符合的好,就看着他网站的样子做了个.

在Habari的wiki上可以查到显示最近评论的方法,这儿先简单引用下:

1)在模板theme.php文件的add_template_vars这个函数中插入如下代码,修改"25"为你想显示的数目: 

  1. $this->assign('recent_comments',
  2.               Comments::get( array('limit'=>25, 'status'=>Comment::STATUS_APPROVED,
  3.                                    'type'=>Comment::COMMENT, 'orderby'=>'date DESC' ) ) );

2)在需要显示的地方(比如侧边栏sidebar.php)插入:

  1. <h3>Recent Comments</h3>
  2. <ul>
  3.   <?php foreach($recent_comments as $comment): ?>
  4.     <li>
  5.       <a href="<?php echo $comment->url ?>">
  6.         <?php echo $comment->name; ?>
  7.       </a> on
  8.       <a href="<?php echo $comment->post->permalink; ?>">
  9.         <?php echo $comment->post->title; ?>
  10.       </a>
  11.     </li>
  12.   <?php endforeach; ?>
  13. </ul>

这样就能实现最近评论功能了.

接着我写下现在使用的这个模板的"最近评论"代码,稍微美化了下,引入了Gravatar头像和RSS链接.

theme.php插入相同的代码,接着在CSS中加两段:

  1. div#recentcomments ul{
  2.         text-align:justify;
  3.         padding-bottom: 7px;
  4.         margin-bottom:7px;
  5.         border-bottom: #eaeaea 1px solid;
  6.     min-height: 25px;
  7. }
  1. div#recentcomments div.gravatar_mini
  2. {
  3.     float:left;
  4.         margin-right:5px;
  5. }

 接着在sidebar.php中加入这么一段:

  1. <div id="recentcomments">
  2. <h3><a href="http://zhais.com/atom/comments" title="Comments Feed"><img alt="comments Feed"
  3. src="<?php echo $this->theme_url; ?>/images/feed.png" /></a>&nbsp;Recent Comments</h3>
  4.     <?php foreach($recent_comments as $comment): ?>
  5.  
  6.    <ul>
  7.        <div class="gravatar_mini">      
  8.         <img alt="Gravatars Icon" src = "<?php echo 
  9.         "http://www.gravatar.com/avatar/".md5( $comment->email )."?s=25" ?>">
  10.        </div>
  11.    <div>
  12.    <a href="<?php echo $comment->url ?>">
  13.    <?php echo $comment->name; ?></a>
  14.    <?php echo " commented, &quot;".$comment->content."&quot;"." on the post "?>
  15.    <a href="<?php echo $comment->post->permalink; ?>">
  16.    <?php echo $comment->post->title."."; ?></a>
  17.   </div>
  18.   </ul>                                  
  19. <?php endforeach; ?>
  20. </div>

完成了 :)

  

前面一篇讲了利用插件来调用Gravatar头像,但有时我们同一个网站需要不同大小的Gravatar头像,或是自定义Gravatar的默认头像,插件可能没这么多功能,所以我们来看看Gravatar网站提供的方法,可以实现全部功能.

html中只要插入  <img alt="Gravatars Icon" src = "Gravatar图像地址"> 就能实验调用,Gravatar图像地址可以带参数来实现不同功能.

举例说明图像地址,最简单的形式是:

http://www.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802

其中后面的一串数字是Email地址的MD5码,MD5码的转换各平台不同,一般为md5(Email地址).

参数共3个,图像大小,默认图像和图像分级.举例:

http://www.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802?d=identicon&s=80&r=g

可以看到参数都加在?号后,之间用&连接.

1) d代表默认头像(给那些没设置Gravatar的用),Gravatar网站提供了 "identicon" "monsterid" and "wavatar" 这三种,也可以输入自定义的图像地址.

2) s代表图像大小,后面=80就是长宽都是80px.

3)r是分级,后面的值共有g, pg, r, x这4种,越往后限制级越高(暴力,情色图片),默认是g.

这句是我Habari中的调用语句,可以作为参考:

 <img alt="Gravatars Icon"

 src = "<?php echo "http://www.gravatar.com/avatar/".md5( $comment->email )."?s=25" ?>">

更详细的内容请看官方网站.

 

Gravatar是一个提供通用头像的网站,你在Gravatar上传设置头像并且关联到Email地址后,以后支持Gravatar的网站留言,只要输入Email地址,就会自动显示头像.wordpress默认就支持Gravatar,Habari需要通过插件来使用这项功能.

此插件由Andrew da Silva所写,在此处下载对应你Habari版本的压缩包.

关于怎样安装插件,请看此文.

安装后需要修改模板来实现功能,在需要显示Gravatar头像的地方加上:

<img src="<? echo $comment->gravatar ?>">

 

以我这个网站为例,你可以试着回复下,就能看到评论右边有你的Gravatar头像.

先在css文件中加入这么段: 

  1. div#entry-comments div.gravatar
  2. {
  3.     float:right;
  4.     margin-left:10px;
  5.     margin-right:10px;
  6. }

接着在comments.php中找到正确的位置(各个模板不同),加入:

  1. <div class="gravatar">
  2.  
  3. <img src="<? echo $comment->gravatar ?>">
  4.  
  5. </div>

这样就完成了,当然你也可以直接在comments.php中加入那ju话.