打印增强软件-FinePrint Server Edition 6.13企业版

FinePrint 是一个在Windows中使用的打印机增强程序,FinePrint能通过控制和增强打印输出来节省墨水、纸张和时间。

FinePrint企业版的一些功能说明:
# 打印预览: 带有编辑能力的全面打印预览。简单的添加空页,删除页面和重排打印任务。
# 节省墨水: 提供选项把彩色文本转换为黑白,并跳过图像。
# 多页打印在一张纸上: 在一张纸上打印 2, 4 或 8 页。
# 水印,页眉页脚: 水印,页眉页脚选项允许文档用日期、时间、系统变量或当前文本来标记。
# 表单和信笺抬头: 让电子表单和信笺抬头的创建更简单。打印预览功能在你打印之前显示将要输出的内容,确认正确的顺序。
# 整合打印任务: 允许多个文档整合到一个打印任务。这在创建基于Web页的小册子等。
# 文件保存: 把页面或任务保存为 TIFF、JPEG、BMP、文本和FP 格式。
# 支持剪贴板: 所有的打印输出的文本,位图或元文件能复制到剪贴板。任何输出的文本能提取到文件中来搜索,或其他应用。
# 支持双面打印: 支持使用所有的文档和打印机来制作小册子和双面打印。把所有文档打印到小册子中,更容易读取和携带,双面打印让纸张减少了一半,减少了旅行的重量。
# 页面缩放: 允许把大的页面缩放到适合标准页面大小,如 Letter 或 A4。
# 可调页边距: 通过使用最大的可打印区域,调整页边距可以增加文本的大小,更有利于阅读。
# 装订线支持: 提供用于装订文档的装订线空间。
# 多个 FinePrint 打印机: 能创建多个 FinePrint 打印机。允许创建多个不同配置的“虚拟打印机”例如,你可以有一个自动打印小册子的“小册子打印机”或者“信笺抬头打印机”不出现 FinePrint对话框,直接打印你的信笺抬头。
# 简单的服务器部署: 在服务器上做为共享打印机安装来用于组和企业部署

FinePrint注册码:
FBW55-5K6S4-X5KWS
5STFB-FKKWK-5SJ5S
5B5VP-5KKNK-5SHSS
585FV-5S6SR-F5KWS
5PWF5-5JCWK-FV8WS

比绿色软件更方便实用的的云端软件平台1.0 Beta4

比绿色软件更方便快捷?重新安装系统后,大型软件不想重新安装?试试云端软件,云端(Cloud)是基于应用虚拟化技术的集软件搜索、下载、使用、管理、备份等多种功能为一体的软件平台。云端的工作原理是将事先分离出来的软件数据通过虚拟化的环境映射到系统中运行,这样既保持了软件的原貌,又能够达到将软件与系统安全隔离的目的,从而具有应用环境瞬间恢复、操作系统保护、软件绿色化、资源快捷管理等众多优良特性。

云端用更先进的虚拟化技术,实现软件的全面绿色,并改善了传统绿软的缺陷。对比如下:

greentoyundaun

云端软件平台 1.0 Beta4
更新日志:

1.增加了书籍宝库,内有大量最新、最热的网络书籍提供阅读。
2.推出了书籍最新章节自动提醒功能,及时提醒,方便省心(注:需注册云端帐号)。
3.增加了小游戏频道,通过游戏宝库首页顶部宣传海报进入。
4.修正了可能引起云端中软件部分功能失效的一处重大Bug。
5.修正了部分情况下,修改本地设置被保存到云端的问题。如IE设置代理等。
6.优化了驱动部分处理策略。
7.修正了在win7下与组策略冲突导致蓝屏的问题。
8.修正了在fat,fat32文件系统下可能导致配置不能保存的问题。
9.修正了文件剪切到桌面等位置可能被缓存的问题。
云端1.0b4官方下载地址

免插件实现Wordpress评论分页

WordPress评论分页这个功能本来是没打算折腾上去的,因为壹品集不是名博,人气还没有旺到评论多的数不完,不过话说回来,折腾一次是折腾,折腾两次也是折腾,于是还是弄上去算了。此WordPress评论分页效果是利用WP自带的评分分页导航的函数,所以应该在大部分WordPress博客上都是有效的。

免插件实现Wordpress评论分页代码:

<div id="comments-nav">
<?php paginate_comments_links('prev_text=上一页&next_text=下一页');?>
</div>

用上面这段代码替换原 comments.php 内的以下两句(其他主题类似):

<div class="left_border"><?php previous_comments_link('上一页') ?></div>
<div class="right_border"><?php next_comments_link('下一页') ?></div>

CSS美化代码:

#comments-nav{text-align:center;}
#comments-nav a{padding:5px 10px;border:1px solid #ccf;}
#comments-nav a:hover{border:1px solid #356aa0;color:#356aa0;}
#comments-nav span.current{font-weight:700;border:1px solid #356aa0;color:#356aa0;padding:5px 10px;}

折腾完了。

资料来源:http://immmmm.com/wordpress-native-comment-navigation.html

WordPress之超酷Tab切换代码

大家先看看壹品集(只在文章页侧边栏上有)的tab切换效果,是不是觉得还不错,其实这只是一个简单的jQuery Tab切换效果,虽然很简单,但是却很实用。如果大家对此感兴趣,可以照着下面的方法折腾一番。

由于它是jQuery效果,所以首先一点,要确保你的WordPress主题加载了jQuery运行库。

关于加载jQuery库可以参考下面的方法,如果你的主题已经加载了jQuery库,那跳过吧!

一、在header.php的head标签中加载jQuery库(非加不可):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

当然,如果你觉得你的主机比GG更稳定更速度,那放本地也行的!

二、添加利用这个库让元素动起来的代码(可理解为命令代码):

$('#shang').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});
$('#xia').click(function(){$('html,body').animate({scrollTop:$('#footer').offset().top}, 800);});

上面这段就是一个让滑动按钮起作用的jQuery代码,那我们又该如何使用这个代码呢?有二个方法:

1.直接在header.php添加如下结构的代码:

<script type="text/javascript" >
jQuery(document).ready(function($){  //注意要用这个把jQuery代码都包裹起来,不然里面的可都是无效的哦~
  $('#shang').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});
  $('#xia').click(function(){$('html,body').animate({scrollTop:$('#footer').offset().top}, 800);}); 
  //代码段二……
  //代码段三……
});
</script>

2.推荐把方法1说的代码另存为.js文件:

jQuery(document).ready(function($){
  $('#shang').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});
  $('#xia').click(function(){$('html,body').animate({scrollTop:$('#footer').offset().top}, 800);}); 
});

然后再在header.php的head标签中添加:

<script type="text/javascript" src="http://xxxooo.com/xxxooo.js"></script>

注意把上面的XXOO换成你的网站的路径哦。

现在加载完了jQuery库,那继续来实现jQuery tab菜单切换效果。把下面代码放在你想要实现tab切换效果的地方,如:sidebar等位置:

一、HTML代码结构

<div id="sidebar-tab">
	<div id="tab-title">
		<h3><span class="selected">最新评论</span><span>近期热评</span><span>随机文章</span></h3>
	</div>
	<div id="tab-content">
		<ul><?php wkc_recent_comments('number=10&length=25'); ?></ul>
		<ul class="hide"><?php wkc_most_commented_posts('number=10&days=300'); ?></ul>
		<ul class="hide"><?php wkc_random_posts('number=10&length=40'); ?></ul>
	</div>
</div>

说明:#tab-title是标题,#tab-content是对应的内容(其中三个ul内的代码是WP Kit CN插件调用相应标题内容的)。如果你要显示4个内容,则在标题和内容分别添加一个span和ul即可!

二、CSS美化代码

#sidebar-tab{border:1px solid #ccf;margin-bottom:1.5em;overflow:hidden;}
#tab-title h3{color:#666;font-size:15px;font-weight:400;}
#tab-title .selected{color:#356aa0;border-bottom:0px;} /*标题被选中时的样式*/
#tab-title span{padding:5px 9px 5px 10px;border:1px solid #ccf;border-right:0px;margin-left:-1px;cursor:pointer;}
#tab-content .hide{display:none;} /*默认让第一块内容显示,其余隐藏*/
#tab-content ul{padding:5px 10px;overflow:hidden;}
#tab-content ul li{padding-top:5px;height:20px;}

关于css,不同主题有不同处理方法,自己修改吧。

完成这步,效果是已经出来了,只是切换的这个功能还没有。那让我们一起有请强大利器出场!

三、jQuery控制代码

$('#tab-title span').mouseover(function(){
	$(this).addClass("selected").siblings().removeClass();
	$("#tab-content > ul").eq($('#tab-title span').index(this)).show().siblings().hide();
});

这是一段jQuery裸代码,关于怎么运用到文件中去,请看上面部分

稍微陈述下控制代码的运作过程:鼠标移到一个标题(#tab-title span)时,该标题添加被选中(.selected)的效果,其他标题移除被选中的效果;同时,获取标题被选择的序号(.eq()),让内容中对应的子项(#tab-content ul)显示,其余子项隐藏。

更改为点击标题切换,而且内容显示方式改用slideUp/slideDown。

$('#tab-title span').click(function(){
	$(this).addClass("selected").siblings().removeClass();
	$("#tab-content > ul").slideUp('1500').eq($('#tab-title span').index(this)).slideDown('1500');
});

壹品集现在就是用的这种效果。

资料来源:http://immmmm.com/jquery-tab-switch-code-improved.html

抛弃Pagenavi-实现免插件文章翻页功能

现在几乎所有的WordPress博客都有文章翻页功能吧?不过WordPress原版的翻页功能有点脑残,它默认是下一页下一页这样一页一页的翻。文章多的话,翻页都可以把你也翻成脑残的。所以很多人都采用Pagenavi翻页插件来实现WordPress文章翻页功能,不过WordPress插件装多了又会影响博客速度,遂决定还是采用代码实现文章翻页功能。如果你和我一样同样有WordPress插件洁癖的的话,那你也可以尝试折腾一下WordPress。

经壹品集测试使用下面的免插件文章翻页代码完全可以代替Pagenavi翻页插件,效果相当不错。

 免插件实现文章翻页功能具体方法:

1. 把下面的代码都扔到主题的 functions.php 里面:注意要放在 <?php … ?> 里面

/* Mini Pagenavi v1.0 by Willin Kan. Edit by zwwooooo */
if ( !function_exists(‘pagenavi’) ) {
    function pagenavi( $p = 5 ) { // 取当前页前后各 2 页
        if ( is_singular() ) return; // 文章与插页不用
        global $wp_query, $paged;
        $max_page = $wp_query->max_num_pages;
        if ( $max_page == 1 ) return; // 只有一页不用
        if ( empty( $paged ) ) $paged = 1;
        echo ‘<span class="pages">Page: ‘ . $paged . ‘ of ‘ . $max_page . ‘ </span> ‘; // 显示页数
        if ( $paged > 1 ) p_link( $paged – 1, ‘上一页’, ‘« Previous’ );/* 如果当前页大于1就显示上一页链接 */
        if ( $paged > $p + 1 ) p_link( 1, ‘最前页’ );
        if ( $paged > $p + 2 ) echo ‘… ‘;
        for( $i = $paged – $p; $i <= $paged + $p; $i++ ) { // 中间页
            if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class=’page-numbers current’>{$i}</span> " : p_link( $i );
        }
        if ( $paged < $max_page – $p – 1 ) echo ‘… ‘;
        if ( $paged < $max_page – $p ) p_link( $max_page, ‘最后页’ );
        if ( $paged < $max_page ) p_link( $paged + 1,’下一页’, ‘Next »’ );/* 如果当前页不是最后一页显示下一页链接 */
    }
    function p_link( $i, $title = ”, $linktype = ” ) {
        if ( $title == ” ) $title = "第 {$i} 页";
        if ( $linktype == ” ) { $linktext = $i; } else { $linktext = $linktype; }
        echo "<a class=’page-numbers’ href=’", esc_html( get_pagenum_link( $i ) ), "’ title='{$title}’>{$linktext}</a> ";
    }
}
// — END —————————————-

2. 在页面(index.php、home.php、archive.php等)的适当位置添加函数调用

<?php if (function_exists(‘pagenavi’)) { pagenavi(); } ?>

3. 导航样式css参考:

.page-numbers{line-height:16px;margin:0;padding:3px 5px;text-decoration:none;background:#fff;border-top:2px solid #fff;}
.page-numbers:hover{border-top:2px solid #ff00a4;}
.current,.current:hover{color:#fff;background:#45b9f6;border-top:2px solid #45b9f6;}
.current:hover{border-top:2px solid #00679d;}

折腾完了,又干掉一个Pagenavi翻页插件了。

至于翻页效果看壹品集博客首页底部的页面导航吧。当然我博客上的css样式和现在文章中写的有点不一样。css视个人不同模板自行修改。

资料来源:http://zww.me/archives/25180

免插件实现WordPress评论回复邮件通知

也许大家会问WordPress评论回复邮件通知有什么作用?壹品集觉得,对于博客最大好处就是可以增加博客的粘性,想像一下,当访客有一天打开他的邮件,发现有一封来自你博客上评论回复的邮件通知,访客也许会再次去看看他曾经留言评论过的博客,这就无疑在一定程度上会增加你博客的回头率。而对于访客的好处就是,如果你是去博客咨询点相关问题,但是过后你可能忘记这回事,就是博主在博客中解答了你相关的问题,你也不知道结果,这时候有邮件回复通知就不会让你错过了。所以在一定程度上,WordPress评论回复邮件通知这个功能还是挺有用的。也许上面的废话太多了,说重点吧!

WordPress评论回复邮件通知出于对访客有好度的考虑可以分三种形式:
一、有勾选栏, 由访客决定是否要回应邮件通知(友好度比较好)
二、无勾选栏, 由管理者决定在什麽条件下发邮件(这个中等吧)
三、所有回覆都发邮件(这个就比较邪恶了,太强制性了吧?)

必须注意的是:需要使用WordPress评论回复邮件通知功能,那么你的服务器一定要有 mail() 功能. 测试方式: 在登入页故意按下 ‘忘记密码’, 收到邮件就有 mail() 功能; 没收到邮件的可以下课了.

一、有勾选栏, 由访客决定是否要对评论回复邮件通知:(推荐这种方式)
(会在模板自动加勾选栏, 如果不想自动加, 可把後面一小段删除.)

/* comment_mail_notify v1.0 by willin kan. (有勾选栏, 由访客决定) */
function comment_mail_notify($comment_id) {
  $admin_notify = ‘1’; // admin 要不要收回覆通知 ( ‘1’=要 ; ‘0’=不要 )
  $admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改为你指定的 e-mail.
  $comment = get_comment($comment_id);
  $comment_author_email = trim($comment->comment_author_email);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
  global $wpdb;
  if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == ”)
    $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
  if (($comment_author_email != $admin_email && isset($_POST[‘comment_mail_notify’])) || ($comment_author_email == $admin_email && $admin_notify == ‘1’))
    $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify=’1′ WHERE comment_ID=’$comment_id’");
  $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : ‘0’;
  $spam_confirmed = $comment->comment_approved;
  if ($parent_id != ” && $spam_confirmed != ‘spam’ && $notify == ‘1’) {
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = ‘您在 [‘ . get_option("blogname") . ‘] 的留言有了回应’;
    $message = ‘
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>’ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!</p>
      <p>您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:<br />’
       . trim(get_comment($parent_id)->comment_content) . ‘</p>
      <p>’ . trim($comment->comment_author) . ‘ 给您的回应:<br />’
       . trim($comment->comment_content) . ‘<br /></p>
      <p>您可以点击 <a href="’ . htmlspecialchars(get_comment_link($parent_id)) . ‘">查看回应完整内容</a></p>
      <p>欢迎再度光临 <a href="’ . get_option(‘home’) . ‘">’ . get_option(‘blogname’) . ‘</a></p>
      <p>(此邮件由系统自动发出, 请勿回覆.)</p>
    </div>’;
    $from = "From: "" . get_option(‘blogname’) . "" <$wp_email>";
    $headers = "$fromnContent-Type: text/html; charset=" . get_option(‘blog_charset’) . "n";
    wp_mail( $to, $subject, $message, $headers );
    //echo ‘mail to ‘, $to, ‘<br/> ‘ , $subject, $message; // for testing
  }
}
add_action(‘comment_post’, ‘comment_mail_notify’);

/* 自动加勾选栏 */
function add_checkbox() {
  echo ‘<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回覆时邮件通知我</label>’;
}
add_action(‘comment_form’, ‘add_checkbox’);

// — END —————————————-

二、无勾选栏, 由管理者决定在什麽条件下发邮件:

/* comment_mail_notify v1.0 by willin kan. (无勾选栏) */
function comment_mail_notify($comment_id) {
  $admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改为你指定的 e-mail.
  $comment = get_comment($comment_id);
  $comment_author_email = trim($comment->comment_author_email);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
  $to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : ”;
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != ”) && ($spam_confirmed != ‘spam’) && ($to != $admin_email) && ($comment_author_email == $admin_email)) {
    /* 上面的判断式,决定发出邮件的必要条件:
    ($parent_id != ”) && ($spam_confirmed != ‘spam’): 回覆的, 而且不是 spam 才可发, 必需!!
    ($to != $admin_email) : 不发给 admin.
    ($comment_author_email == $admin_email) : 只有 admin 的回覆才可发.
    可视个人需求修改以上条件.
    */
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
    $subject = ‘您在 [‘ . get_option("blogname") . ‘] 的留言有了回应’;
    $message = ‘
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>’ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!</p>
      <p>您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:<br />’
       . trim(get_comment($parent_id)->comment_content) . ‘</p>
      <p>’ . trim($comment->comment_author) . ‘ 给您的回应:<br />’
       . trim($comment->comment_content) . ‘<br /></p>
      <p>您可以点击 <a href="’ . htmlspecialchars(get_comment_link($parent_id)) . ‘">查看回应完整内容</a></p>
      <p>欢迎再度光临 <a href="’ . get_option(‘home’) . ‘">’ . get_option(‘blogname’) . ‘</a></p>
      <p>(此邮件由系统自动发出, 请勿回覆.)</p>
    </div>’;
    $from = "From: "" . get_option(‘blogname’) . "" <$wp_email>";
    $headers = "$fromnContent-Type: text/html; charset=" . get_option(‘blog_charset’) . "n";
    wp_mail( $to, $subject, $message, $headers );
    //echo ‘mail to ‘, $to, ‘<br/> ‘ , $subject, $message; // for testing
  }
}
add_action(‘comment_post’, ‘comment_mail_notify’);
// — END —————————————-

三、所有回覆都发邮件:(这个功能慎用,弄不好你就成为垃圾邮件制造者了哦,呵呵)
(当然, 在底层的评论不发邮件, 回覆的才发)

/* comment_mail_notify v1.0 by willin kan. (所有回覆都发邮件) */
function comment_mail_notify($comment_id) {
  $comment = get_comment($comment_id);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != ”) && ($spam_confirmed != ‘spam’)) {
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); //e-mail 发出点, no-reply 可改为可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = ‘您在 [‘ . get_option("blogname") . ‘] 的留言有了回应’;
    $message = ‘
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>’ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!</p>
      <p>您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:<br />’
       . trim(get_comment($parent_id)->comment_content) . ‘</p>
      <p>’ . trim($comment->comment_author) . ‘ 给您的回应:<br />’
       . trim($comment->comment_content) . ‘<br /></p>
      <p>您可以点击 <a href="’ . htmlspecialchars(get_comment_link($parent_id)) . ‘">查看回应完整内容</a></p>
      <p>欢迎再度光临 <a href="’ . get_option(‘home’) . ‘">’ . get_option(‘blogname’) . ‘</a></p>
      <p>(此邮件由系统自动发出, 请勿回覆.)</p>
    </div>’;
    $from = "From: "" . get_option(‘blogname’) . "" <$wp_email>";
    $headers = "$fromnContent-Type: text/html; charset=" . get_option(‘blog_charset’) . "n";
    wp_mail( $to, $subject, $message, $headers );
    //echo ‘mail to ‘, $to, ‘<br/> ‘ , $subject, $message; // for testing
  }
}
add_action(‘comment_post’, ‘comment_mail_notify’);
// — END —————————————-

发现这程式在评论分页的 get_comment_link() 有个 bug.
这 bug 对使用 comments 和 trackbacks/pingbacks 分离的情况才会出现, 没分离的是没影响.
当直接叫用 get_comment_link() 因为没经过 wp_list_comments(‘type=comment’) 函数, 它会以所有的评论作为分页对象. 所以 trackbacks/pingbacks 数量多的时候会让 cpage 多算了, 本来是 cpage=7 会成了 cpage=8, 所以点击邮件里的 "查看回应完整内容" 会找不到正确评论页面.

所以有必要将上面的

get_comment_link($parent_id)

改成:

get_comment_link($parent_id, array(‘type’ => ‘comment’))

加入的参数是让它选取 comment 数量计算就好.
评论式样有使用 comments 和 trackbacks/pingbacks 分离的童鞋, 请进行修改. 没用到的就不用改.

资料来源:http://kan.willin.org/?p=1295

WordPress免插件读者墙改进版

这是续上篇WordPress免插件读者墙之后的改进版本,是在网上无意中发现的,一块CP过来以备自己以后参考。 上版WordPress免插件读者墙的代码据说是按照作者名把评论数量归类相加的,这就出现个问题,就是当作者名称一样的时候,网站和邮箱不一样,或者没有填写邮箱的时候,评论数量会增加到已经存在的作者上.这样对后来的同名留言者就显得很不公平。另一个问题类似:是有些评论者今天叫这个名字,明天又改了名字,但是邮箱和网址不变,就变成两个人展示出来了.

于是就有高手整理出解决上述问题的新代码来了,WordPress读者墙免修改版代码如下:

<h2>Most Active Friends</h2> //标题,可根据需要增加样式
<ul>
<?php
$my_email = "’" . get_bloginfo (‘admin_email’) . "’";
//获取管理员邮箱
$counts = $wpdb->get_results("
SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH )
//1 MONTH就是一个月之内的排行
AND user_id=’0′
AND comment_author_email != $my_email //根据邮箱判断,输出非博主的数据.
AND post_password=”
AND comment_approved=’1′
AND comment_type=”) AS tempcmt
AS tempcmt GROUP BY comment_author_email
//按同一作者邮箱把评论数量归类相加
ORDER BY cnt
DESC LIMIT 12"); //最后一个数字12就是显示头像的数量。
foreach ($counts as $count) {
$c_url = $count->comment_author_url;
$mostactive .= ‘<li>’ . ‘<a href="’. $c_url . ‘" title="’ . $count->comment_author . ‘ (‘. $count->cnt . ‘comments)">’ . get_avatar($count->comment_author_email, 40) . ‘</a></li>’;
}</div>
echo $mostactive;
?>
</ul>

由于主题的不同,可能部分地方需要自己修改一下CSS,关于css定义,可参考上篇WordPress免插件读者墙

注:上面代码中标注出了INTERVAL 1 MONTH )
//1 MONTH就是一个月之内的排行,这个可以修改成1 YEAR ,意思是一年内的排行,如果修改成1 DAY 或者 24 HOUR 就会显示1天内或24小时内留言的朋友的头像,

如果需要根据评论的最后时间排列的.
这就需要将上面代码中ORDER BY cnt
改为 ORDER BY comment_date_gmt
然后删除掉DESC LIMIT 12,因为我们并不知道24小时内有多少人会留言.
所以就不需要限定显示的数量了.

同时推荐上述代码配合Gravatar 头像緩存来使用,效果更佳。

Gravatar 头像緩存实现方法:

先在你的网站 wp-content 的同级目录建立资料夹: /avatar 权限:755, 这是准备 gravatar 缓存的路径.准备一张适合你模板尺寸的默认头像, 名为"default.jpg" 放在此路径.

将下列代码 copy 到模板的 functions.php

function my_avatar($avatar) {
$tmp = strpos($avatar, ‘http’);
$g = substr($avatar, $tmp, strpos($avatar, "’", $tmp) – $tmp);
$tmp = strpos($g, ‘avatar/’) + 7;
$f = substr($g, $tmp, strpos($g, "?", $tmp) – $tmp);
$w = get_bloginfo(‘wpurl’);
$e = ABSPATH .’avatar/’. $f .’.jpg’;
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.’/avatar/’.$f.’.jpg’));
if ( filesize($e) < 500 ) copy($w.’/avatar/default.jpg’, $e);
return $avatar;
}
add_filter(‘get_avatar’, ‘my_avatar’);

上面这个Gravatar头像緩存代码是将 my_avatar() 挂勾在 get_avatar() 後面, 将 get_avatar() 的输出再进行处理.
这个缓存方式不必改模板, 而且连後台都可用缓存头像, 但有些缺点是: 多了程序会较耗资源和速度, 而且後台的头像比较小, 缓存的头像在前台比较难看.
另外, 你也许已发现, 代码中有两个可用正则匹配的地方, 故意改用字串函数, 目的是加快执行速度.

注意: 因为这方法是挂在 get_avatar() 後面, 所以必须在 get_avatar() 定义 $default,
例: echo get_avatar( $id_or_email, $size = ’42’, $default = get_bloginfo(‘wpurl’) . ‘/avatar/default.jpg’ );
其中 $id_or_email 的部份要看你模板怎麽写, 後面的 $default 所带的就是默认头像.

以前的版本在第一次 copy 头像时不能显示头像 (因为缓存没有头像), 这新版在第一次没头像时, 会直接显示 gravatar 的头像.

WordPress免插件读者墙改进版代码来自:http://amangs.com/wordpress-reader-wall.html
Gravatar 头像緩存代码来自:http://kan.willin.org/?p=1320

WordPress读者墙免插件版

既然已经折腾了WordPress这么久,也就不在乎再折腾一把了,上次非插件实现了gravatar 头像缓存功能,今天就再整一次WordPress读者墙免插件版。纯CP党,所以只贴重要部分。

这次的WordPress读者墙有2 个版本:1 个是针对没有使用头像缓存的,1 个是使用了头像缓存的。关于 gravatar 头像缓存请参考上篇文章。

一、没有使用头像缓存的读者墙代码:

<h2>Most Active Friends</h2>
<ul class="ffox_most_active">
<?php
$counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id=’0′ AND comment_author != ‘zwwooooo’ AND post_password=” AND comment_approved=’1′ AND comment_type=”) AS tempcmt GROUP BY comment_author ORDER BY cnt DESC LIMIT 12");
foreach ($counts as $count) {
$c_url = $count->comment_author_url;
if ($c_url == ”) $c_url = ‘http://zww.me/’;
$mostactive .= ‘<li class="mostactive">’ . ‘<a href="’. $c_url . ‘" title="’ . $count->comment_author . ‘ (‘. $count->cnt . ‘comments)">’ . get_avatar($count->comment_author_email, 40) . ‘</a></li>’;
}
echo $mostactive;
?>
</ul>

说明:

  1. 里面添加了 2 个 class:ffox_most_active 和 mostactive,根据自己模板在 style.css 设置样式吧
  2. 里面的 http://zww.me 改为你自己博客的网址
  3. 代码里面“DESC LIMIT 12”的 12 是要现示的读者数量
  4. 代码里面的“zwwooooo”是指除博主以外的意思,替换为自己的 WP 用户名吧

css 样式参考:

#sidebar .ffox_most_active li{
list-style:none;
float:left;
border:none;
line-height:0;
}
#sidebar .ffox_most_active img.avatar{
width:38px;
height:38px;
border:1px solid #ddd;padding:2px;margin:0 1px 0 0;}

二、使用了  willin 的简单 gravatar 头像缓存的读者墙代码:

<h2>Most Active Friends</h2>
<ul class="ffox_most_active">
<?php
$counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id=’0′ AND comment_author != ‘zwwooooo’ AND post_password=” AND comment_approved=’1′ AND comment_type=”) AS tempcmt GROUP BY comment_author ORDER BY cnt DESC LIMIT 12");
foreach ($counts as $count) {
$a = get_bloginfo(‘wpurl’) . ‘/avatar/’ . md5(strtolower($count->comment_author_email)) . ‘.jpg’;
$c_url = $count->comment_author_url;
if ($c_url == ”) $c_url = ‘http://zww.me/’;
$mostactive .= ‘<li class="mostactive">’ . ‘<a href="’. $c_url . ‘" title="’ . $count->comment_author . ‘ (‘. $count->cnt . ‘comments)"><img src="’ . $a . ‘" alt="’ . $count->comment_author . ‘ (‘. $count->cnt . ‘comments)" class="avatar" /></a></li>’;
}
echo $mostactive;
?>
</ul>

说明参考第一种
文章来源:http://zww.me/archives/24732